[英]pass type to generic class
我正在通过EF的ObjectStateEntry进行循环,因此我可以访问enrty.Entity,我在poco类上进行了一些静态验证,并且我还想进行业务规则验证,因此我创建了一个库来执行此操作,现在我有了这行期望类型为客户的代码。
MyEntityValidator<needtypehere> ev = new MyEntityValidator<needtyehere>(new EntityValidator());
所以我在传递'needtypehere'的类型时遇到了问题。 我尝试了entry.Entity.GetType()但没有工作。 同样,这是该方法的标志
GetErrors(this ObjectStateEntry entry)
要从Type
实例调用泛型,您必须使用:
Type closedType = typeof(MyEntityValidator<>)
.MakeGenericType(entry.Entity.GetType());
object obj = Activator.CreateInstance(closedType);
这很尴尬-因为您需要用反射做很多其他工作。 另外,您可以调用执行代码的通用方法 :
public static void InvokeGeneric<T>(...) {
MyEntityValidator<T> ev = new MyEntityValidator<T>(
new EntityValidator());
... etc; lots more code that uses ev
}
...
typeof(ContainingType).GetMethod("InvokeGeneric").MakeGenericMethod(
entry.Entity.GetType()).Invoke(null, args);
您可以使用MakeGenericType 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.