2012-10-14 23 views
-4

如何在C#中執行此操作?c中的嵌套通用方法#

public bool IsValid<Validator<T>>(T model) 
{ 
    //... 
} 

我想使用:

IsValid<Validator.City>(city); 

,而不是

IsValid<CityViewModel,Validator.City>(city); 

我的功能是:

public static bool IsValid<TModel, TValidator>(TModel Item) where TValidator : AbstractValidator<TModel>, new() 
    { 
     var validate = new TValidator(); 
     //... 
    } 
+0

你有沒有嘗試寫在你的代碼在C#中? – Habibillah

+3

你忘了問這個問題。 – Adam

+2

你完全改變了你的文章的內容,並使所有的答案無用。仍然完全不清楚,你想問什麼。 –

回答

1

如果要強制約束的泛型類型應繼承自Validator類,那麼你可以使用下面的語法。

public bool IsValid<T>(T model) where T : Validator<T> 
{ 
    //return true; 
} 
2

您可以在方法的簽名中使用where T : SomeType約束泛型類型參數。

作爲一個方面說明:我更喜歡使用幫助瞭解預期類型的​​類型參數名稱(這裏:TValidatorTModel)。這使得代碼比僅使用T更可讀。

public bool IsValid<TValidator>(TModel model) 
    where TValidator : Validator<TModel> 
{ 
    //return true;  
}