【发布时间】:2020-05-08 10:12:48
【问题描述】:
在下面的代码中
public class CustomValidator<T>
{
// some code
}
public abstract class Parent
{
public CustomValidator<Parent> Validator { get; protected set; }
}
public class Child : Parent
{
public string Name { get; set; }
public Child()
{
Validator = new CustomValidator<Child>();
// Doesn't work, cannot cast implicitly
}
}
由于我们可以将孩子分配给父母,
为什么我们不能为CustomValidator<Parent> 类型的属性设置CustomValidator<Child>?
【问题讨论】:
-
因为并非所有从 Parent 派生的类都将是 Child 类型,这意味着其他代码可能会向此验证器添加其他东西,从 Parent 派生,而不是 Child。