我被困在这里。在我的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的完全限定名。 谢谢 - 阿尼尔班
答案 0 :(得分:1)
问题是最后一行。您在.GetType()
类型(变量Type
)上调用了thisType
,这将返回RuntimeType
而不是您的类型。最后一行应该是
return thisType.GetProperties();
如果您的命名空间是正确的,那么您在项目中确实拥有这些命名空间(E.DAL.EL
和E.DAL.EG
),它将起作用。
如果它没有检查命名空间并验证这些类型与代码在同一个程序集中!如果它们位于外部,则需要为GetType
方法指定它。
假设它们在名为SharedAssembly
的程序集中,那么您需要以这种方式加载它们
thisType = Type.GetType("E.DAL.EG." + className+ ", SharedAssembly");