【发布时间】:2021-10-19 09:49:26
【问题描述】:
我在 C# 项目中使用 FluentValidator。 我想做一个通用方法,可以验证来自 2 种可能类型的数据:
public class MyClassAValidator : AbstractValidator<MyClassA> {...}
public class MyClassBValidator : AbstractValidator<MyClassB> {...}
public void MyMt<T>(T param)
{
AbstractValidator<T> validator = null;
if(param is MyClassA)
{
var validator = new MyClassAValidator(); // Generatescompiler error
}
else if (cCOSLDto is CCOSLLoyerDto)
{
validator = new MyClassBValidator(); // Generatescompiler error
}
ValidationResult result = validator.Validate(param);
}
编译器无法将 MyClassAValidator() 或 MyClassBValidator() 转换为 AbstractValidator
我该如何处理? 我怀疑(虽然只是怀疑)如果我将基类设置为 MyClassA 和 MyClassB,它会起作用。但我想尽可能避免这种情况,因为 MyClassA 和 MyClassB 实际上是 DTO 类,所以我希望它们保持没有继承关系。
【问题讨论】:
标签: c# inheritance fluentvalidation