Если вы заметите мой комментарий к своему вопросу, будет очевидно, что я не совсем точно знаю, как , как, вам нужно или нужно об этом, но пока у нас не будет более подробного описания, я могу только предложить вы это в надежде, что он хорошо подходит к вашей ситуации (ключ находится в «поиске» сборках):
var className = "System.Boolean";
var assemblyName = "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
var assembly = (from a in assemblies
where a.FullName == assemblyName
select a).SingleOrDefault();
if (assembly != null)
{
System.Runtime.Remoting.ObjectHandle obj =
System.Activator.CreateInstance(assemblyName, className);
}
.NET 2.0 совместимый код
Assembly assembly = null;
var className = "System.Boolean";
var assemblyName = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
foreach (var a in AppDomain.CurrentDomain.GetAssemblies())
{
if (a.FullName == assemblyName)
{
assembly = a;
break;
}
}
if (assembly != null)
{
System.Runtime.Remoting.ObjectHandle obj =
System.Activator.CreateInstance(assemblyName, className);
}
Если вы хотите, чтобы определить, является ли или нет файл существует, прежде чем пытаться Объявление это (хорошая практика), то, учитывая, у вас есть свое имя и знать нужное место, просто попытайтесь найти файл, когда сборка решается:
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
var className = "StackOverflowLib.Class1";
var assemblyName = "StackOverflowLib.dll";
var currentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var obj = Activator.CreateInstance(Path.Combine(currentAssemblyPath, assemblyName), className);
static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var currentAssemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (File.Exists(Path.Combine(currentAssemblyPath, args.Name)))
{
return Assembly.LoadFile(Path.Combine(currentAssemblyPath, args.Name));
}
return null;
}
Вы имеете в виду загруженный в текущий домен приложения? Что такое 'assemblyName'? Полноценное имя сборки или физический путь к файлу? –
@MrDisaapointment Единственное, что я знаю, это то, что у меня есть «CustomModule» в моей базе данных. Если в моем ящике или GAC (!?) Присутствует файл CustomModule.dll, он будет создавать класс, указанный классом. –
Посмотрите мое последнее обновление, надеюсь, этого достаточно, чтобы продолжить. –