出于测试目的,
我正在尝试构建一个场景,其中我有两个具有相同名称空间,类和方法名称的dll。
E.g。
DLL1:
namespace SomeNamespace
{
public class Foo
{
public static string Bar()
{
return "A";
}
}
}
DLL2:
namespace SomeNamespace
{
public class Foo
{
public static string Bar()
{
return "B";
}
}
}
我试图编写动态调用Foo.Bar()的代码,以获得歧义的异常。
在我的代码中,我特别需要将dll名称作为参数传递,我想避免使用。
Assembly a = Assembly.LoadFile(dllPath);
Type t = a.GetType(typeName);
MethodInfo method = t.GetMethod(methodName);
var result = new object();
if (method.IsStatic)
{
result = method.Invoke(null, null);
}
else
{
object instance = Activator.CreateInstance(t);
result = method.Invoke(instance, null);
}
有没有办法让这个例外?
答案 0 :(得分:0)
如果两个程序集具有相同的程序集名称,则可以使用Type.GetType(string)
,如下所示:https://stackoverflow.com/a/6465096/613130,所以
Type t = Type.GetType("SomeNamespace.Foo,SomeAssembly");
我认为没有.NET方法可以在所有已加载的程序集中搜索Type
。