我定义了以下类来进行验证:

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/

10-13 05:53