2013-07-11 49 views
0

我需要调用泛型方法过滤器才能在实体框架数据库表中执行选择。检索通用类型以调用泛型方法

IEnumerable<T> x = Filter<T>(_cust, conditions, value_conditions); 

T可以是我的数据库的任何表。 使用反射我可以执行筛选方法:

MethodInfo methodFilter = typeof(SearchTool).GetMethod("Filter"); 
mI = methodFilter.MakeGenericMethod(eObject); 
IEnumerable<T> x = mI.Invoke(this, new object[] { allElements, conditions, value_conditions }); 

SearchTool”是其中的滤波器功能声明的名称空间的名称。 为了在过滤器的通用方法来定义T,我声明的参数eObject这是定义如下的Type对象:

eObject = Type.GetType("SearchApplication.Customers"); 

SearchApplication”是命名空间,其中命名的数据库表“客户”是定义。客户是一个EntityObject。

问题是:是否有任何其他可能性来检索EF EntityObject的类型而不是像“SearchApplication.Customers”那样声明一个字符串?

在此先感谢 保罗

回答

0

您可以使用typeof

var type = typeof(SearchApplication.Customers); 
+0

是的,OK,你说得对!但是如何从实例中检索它,例如northwindEntities.Customers。(其他)?请注意,northwindEntities是ObjectContext – rebe21

+0

@ rebe21:在这种情况下,您可以使用'GetType()':'northwindEntities.Customers.GetType();' –

+0

嗯......实际上没有....它返回一个ObjectSet 类型 – rebe21