两个类在同一名称空间和&项目也在同一个执行程序集中?

时间:2017-11-16 23:05:44

标签: c# asp.net .net

我在标题中提出问题,因为这有效:

FooBar fooBar = new FooBar();

它击中了FooBar等中的构造函数。但是这会返回null:

Type type = Type.GetType("FooBar");

{I}和我尝试执行此操作的类都在同一名称空间,同一项目中等。

我已经查看了这个帖子:

Type.GetType("namespace.a.b.ClassName") returns null

根据接受的答案(以及其他一些答案),只有在mscorlib.dll或当前正在执行的程序集中找到类型时,此"才有效。"

如果这两个类在同一个命名空间中并且同一个项目(即:相同的.dll)会不能生成相同的执行程序集吗?

我做错了什么?

2 个答案:

答案 0 :(得分:2)

即使它位于相同的程序集和命名空间中,您仍需要提供命名空间。它只是您可以跳过的汇编限定名称。

Type type = Type.GetType("YourNamespace.FooBar");

答案 1 :(得分:1)

来自documentation

  

<强>的typeName 即可。要获取的类型的程序集限定名称。请参阅AssemblyQualifiedName。如果类型在当前正在执行的程序集中或在Mscorlib.dll中,则提供由其名称空间限定的类型名称就足够了。

所以你仍然需要提供命名空间,例如

right:0;left:auto;

如果你真的不想出于某种原因提供命名空间,作为替代方案,你可以轻松地做到这样的事情:

var type = Type.GetType("MyNamespace.FooBar");