相关疑难解决方法(0)

如果typeof(Xyz)存在,为什么System.Type.GetType("Xyz")会返回null?

我在我的(巨大的).NET 4项目中遇到了一个奇怪的行为.在代码中的某个时刻,我指的是一个完全限定的类型,比如说:

System.Type type = typeof (Foo.Bar.Xyz);
Run Code Online (Sandbox Code Playgroud)

稍后,我这样做:

System.Type type = System.Type.GetType ("Foo.Bar.Xyz");
Run Code Online (Sandbox Code Playgroud)

然后我回来了null.我无法理解为什么会发生这种情况,因为我的类型名称是正确的,我已经检查过其他类型并且它们得到了正确的解决.此外,以下LINQ查询查找类型:

var types = from assembly in System.AppDomain.CurrentDomain.GetAssemblies ()
            from assemblyType in assembly.GetTypes ()
            where assemblyType.FullName == typeName
            select assemblyType;

System.Type type = types.FirstOrDefault ();
Run Code Online (Sandbox Code Playgroud)

有什么理由System.Type.GetType可以失败吗?

我终于不得不求助于这段代码而不是GetType:

System.Type MyGetType(string typeName)
{
    System.Type type = System.Type.GetType (typeName);

    if (type == null)
    {
        var types = from assembly in System.AppDomain.CurrentDomain.GetAssemblies ()
                    from assemblyType in assembly.GetTypes ()
                    where assemblyType.FullName == typeName
                    select assemblyType;

        type …
Run Code Online (Sandbox Code Playgroud)

clr types assemblies gettype

18
推荐指数
1
解决办法
1万
查看次数

标签 统计

assemblies ×1

clr ×1

gettype ×1

types ×1