假设我有一点代码:
public static void LoadSomething(Type t)
{
var t1 = Type.GetType(t.AssemblyQualifiedName);
var t2 = t
.Assembly
.GetTypes()
.First(ta => ta.AssemblyQualifiedName == t.AssemblyQualifiedName);
}
发生的情况是 t1 为null而 t2不是 null。我很困惑,因为如果我这样称呼它......
LoadSomething(typeof(SomeObject));
那么两者都不是空的,但我实际上正在做的更像是这样的(不是真的,这被大大简化了,但它说明了我的观点):
LoadSomething(Assembly.LoadFile(@"C:\....dll").GetTypes().First());
所以我的问题的第一部分(供我参考)是......
在第二种情况下,既然必须加载程序集并且我从中找到了类型,为什么Type.GetType
返回 null?
其次(实际解决我的问题)......
当我只有程序集限定名称作为字符串时(我知道之前已使用 Assembly.Load 方法加载),是否有其他方法可以加载类型?