[英]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.