C# C反射实用程序
我编写了以下实用程序类来获取任何名称为className的类的实例C# C反射实用程序,c#,.net,reflection,C#,.net,Reflection,我编写了以下实用程序类来获取任何名称为className的类的实例 public class AssemblyUtils { private AssemblyUtils() { } public static T GetInstance<T>(string assemblyName, string className) { T classInstance = defaul
public class AssemblyUtils
{
private AssemblyUtils()
{
}
public static T GetInstance<T>(string assemblyName, string className)
{
T classInstance = default(T);
System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(assemblyName);
object o = assembly.CreateInstance(className);
if (o is T)
{
classInstance = (T)o;
}
else
{
o = null;
}
return classInstance;
}
注意,我从同一sln中的不同程序集调用了AssemblyUtils.GetInstance
如何解析程序集路径?我猜它找不到程序集,因为它不在同一文件夹中,也不在GAC或系统正在查找的其他目录中
您需要将它们移动到执行程序集所在的同一文件夹中。您可以使用更改加载程序集的文件夹。我猜它找不到程序集,因为它不在同一文件夹中,也不在GAC或系统正在查找的其他目录中
您需要将它们移动到执行程序集所在的同一文件夹中。您可以使用更改加载程序集的文件夹。我认为,要加载MyNamespace.DA.dll的程序集依赖于另一个程序集,而该程序集不在您要查找的文件夹中。将依赖程序集复制到您找到MyNamespace.DA.dll程序集的文件夹中。我认为,您要加载MyNamespace.DA.dll的程序集依赖于另一个程序集,而该程序集不在您要查找的文件夹中。将相关程序集复制到您找到MyNamespace.DA.dll程序集的文件夹中。检查您的bin\Debug文件夹,MyNamespace.DA.dll是否在该文件夹中?如果不是的话,你必须手动把它移到那里。可能会添加一个后置条件,以便自动复制它。还可以尝试使用完整程序集强名称
还有JMSA,在其他线程上进行一些升级投票并接受答案如何?检查您的bin\Debug文件夹,该文件夹中是否有MyNamespace.DA.dll?如果不是的话,你必须手动把它移到那里。可能会添加一个后置条件,以便自动复制它。还可以尝试使用完整程序集强名称
还有JMSA,在你的另一个线程上进行一些向上投票并接受答案如何?正如瓦迪姆提到的Assembly.Load将只在有限的位置查看。Assembly.LoadFrom对您来说可能是一个更好的选择。它采用指向程序集的文件名路径
Assembly.Load根据程序集名称工作,而不是路径。正如Vadim提到的Assembly.Load将仅在有限的一组位置中查找。Assembly.LoadFrom对您来说可能是一个更好的选择。它采用指向程序集的文件名路径
Assembly.Load根据程序集名称而不是路径工作。Ok buddy!你明白了。但是你能不能也给我一张赞成票,这样负面的观点就被抹平了?我认为你的问题是公平的,已经做到了-是-2。好的,伙计!你明白了。但是你能不能也给我一张赞成票,这样负面的观点就被抹平了?我认为你的问题是公平的,已经这样做了-它在-2。PrivateBinPath只能设置为应用程序的基本目录下的文件夹。不能仅将其设置为任何文件夹。因此,只要程序集位于应用程序的文件夹层次结构中的某个位置,这项功能就会起作用。PrivateBinPath只能设置为应用程序的基本目录下的文件夹。不能仅将其设置为任何文件夹。因此,只要程序集位于应用程序的文件夹层次结构中的某个位置,这就可以工作。
IMyInterface ins = AssemblyUtils.GetInstance<IMyInterface>(@"MyNamespace.DA.dll", "MyClassDA");
Could not load file or assembly 'MyNamespace.DA.dll' or one of its dependencies. The system cannot find the file specified.