创建"类型" Type.getType的类对象

时间:2016-12-13 07:04:01

标签: c# object .net-assembly

我被困在这里。在我的vs解决方案中,我们有10个不同的项目 DAL包含2个EF 6.0对象,Say EG和EL。 我有一个API项目。我有一个函数如下,我试图返回EF类的属性:

public IEnumerable<PropertyInfo> GetGetProperties(string className, string instanceType)
    {
        Type thisType;

        if (instanceType.Contains("G"))
        {
            thisType = Type.GetType("E.DAL.EG." + className);
        }
        else 
        {
            thisType = Type.GetType("E.DAL.EL." + className);
        }            
        return thisType.GetType().GetProperties();
    }

但每次&#34; thisType&#34;返回null。这是因为AssemblyInformation吗?如果是这样,那么正确的代码是什么。我在字符串中有Assembly的完全限定名。 谢谢 - 阿尼尔班

1 个答案:

答案 0 :(得分:1)

问题是最后一行。您在.GetType()类型(变量Type)上调用了thisType,这将返回RuntimeType而不是您的类型。最后一行应该是

return thisType.GetProperties();

如果您的命名空间是正确的,那么您在项目中确实拥有这些命名空间(E.DAL.ELE.DAL.EG),它将起作用。

如果它没有检查命名空间并验证这些类型与代码在同一个程序集中!如果它们位于外部,则需要为GetType方法指定它。

假设它们在名为SharedAssembly的程序集中,那么您需要以这种方式加载它们

thisType = Type.GetType("E.DAL.EG." + className+ ", SharedAssembly");