-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 に答える