我在标题中提出问题,因为这有效:
FooBar fooBar = new FooBar();
它击中了FooBar等中的构造函数。但是这会返回null:
Type type = Type.GetType("FooBar");
{I}和我尝试执行此操作的类都在同一名称空间,同一项目中等。
我已经查看了这个帖子:
Type.GetType("namespace.a.b.ClassName") returns null
根据接受的答案(以及其他一些答案),只有在mscorlib.dll或当前正在执行的程序集中找到类型时,此"才有效。"
如果这两个类在同一个命名空间中并且同一个项目(即:相同的.dll)会不能生成相同的执行程序集吗?
我做错了什么?
答案 0 :(得分:2)
即使它位于相同的程序集和命名空间中,您仍需要提供命名空间。它只是您可以跳过的汇编限定名称。
Type type = Type.GetType("YourNamespace.FooBar");
答案 1 :(得分:1)
<强>的typeName 即可。要获取的类型的程序集限定名称。请参阅AssemblyQualifiedName。如果类型在当前正在执行的程序集中或在Mscorlib.dll中,则提供由其名称空间限定的类型名称就足够了。
所以你仍然需要提供命名空间,例如
right:0;left:auto;
如果你真的不想出于某种原因提供命名空间,作为替代方案,你可以轻松地做到这样的事情:
var type = Type.GetType("MyNamespace.FooBar");