2012-10-14 27 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;  
}