-3

我怎样才能在 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();
      //...
    }
4

3 回答 3

3

where T : SomeType您可以在方法的签名中使用来约束泛型类型参数。

附带说明:我更喜欢使用有助于理解预期类型的​​类型参数名称(此处为:TValidatorTModel)。这使得代码比仅使用T.

public bool IsValid<TValidator>(TModel model) 
    where TValidator : Validator<TModel> 
{
   //return true;     
}
于 2012-10-14T12:52:31.137 回答
1

如果要强制执行泛型类型应从Validator类继承的约束,则可以使用以下语法。

public bool IsValid<T>(T model) where T : Validator<T>
{
    //return true;
}
于 2012-10-14T12:50:37.537 回答
1

在 C# 中,您可以使用如下约束来执行此操作:

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

阅读有关约束的更多信息:类型参数的约束(C# 编程指南)

于 2012-10-14T12:51:44.943 回答