我定义了以下类来进行验证:
public class DefValidator : IValidate<IDef>
{
}
public interface IDef : IAttribute
{
}
然后,我有一个定义如下的验证器列表:
IList<IValidate<IAttribute>> ValidationObjects;
当我尝试以下内容时,它不会编译表示无法转换类型。
DefValidator defv = new DefValidator();
ValidationObjects.Add(defv);
当我尝试以下操作时,它会编译,但会生成一个异常,指出“无法投射对象”。
ValidationObjects.Add((IValidate<IAttribute>)defv);
有任何想法吗?
最佳答案
您的问题与协方差/协方差有关,请参见How is Generic Covariance & Contra-variance Implemented in C# 4.0?
关于c# - 如何转换此通用接口(interface)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1407301/