正如@Krekkon 已经提到的Type.GetType()方法需要以下字符串:
要获取的类型的程序集限定名称。请参阅 AssemblyQualifiedName。如果该类型在当前执行的程序集中或在 Mscorlib.dll 中,则提供由其命名空间限定的类型名称就足够了。
对于问题 #2:由于对Type.GetType()的静态调用,您将无法测试该类型是否已返回。如果您可以更改代码,您可以引入一个接口,该接口负责类型解析并表示静态 GetType 方法调用的外观:
interface ITypeResolver
{
Type GetType(string typeName);
}
class SomeClass
{
private readonly ITypeResolver typeResolver = ...;
public IAnInterface Instantiator()
{
var type = this.typeResolver.GetType(A_CONSTANT_STRING);
return (IAnInterface)Activator.CreateInstance(type);
}
}
使用接口,您可以模拟并在 Isolation 中ITypeResolver
测试接口的实现。ITypeResolver