将具有泛型类型的类存储在单个数组中



我有一个类Validator<T>和从中继承的许多其他类,如:TagValidator : Validator<Tag>

假设我想创建一个ModelValidator类,它存储从Validator<T>继承的所有类,并在执行ModelValidator.Validate<T>(T model)时运行特定的类

有没有一种方法可以将具有泛型类型的类存储在单个数组或字典中?

我觉得这并不像评论所说的那么难。

这种东西管用吗?

void Main()
{
var mv = new ModelValidator();
mv.AddValidator(new TagValidator());
mv.AddValidator(new FooValidator());

var tag = new Tag();

mv.Validate(tag);
}
public class ModelValidator
{
private List<object> _validators = new List<object>();

public void AddValidator<T>(Validator<T> validator)
{
_validators.Add(validator); 
}

public void Validate<T>(T model)
{
foreach (Validator<T> validator in _validators.OfType<Validator<T>>())
{
validator.Validate(model);
}
}
}
public abstract class Validator<T>
{
public virtual void Validate(T model) { }
}
public class TagValidator : Validator<Tag> { }
public class FooValidator : Validator<Foo> { }
public class Tag { }
public class Foo { }

最新更新