没有拳击转换为两个类型参数共享父和子

时间:2014-07-03 00:11:37

标签: c# generics type-conversion boxing

我在GetChild方法的声明中得到以下错误(VSC#2010 Express)...

错误1类型' T'不能用作类型参数' T'通用类型或方法' ...儿童'。没有拳击转换或类型参数转换来自' T'到...... {明显'

public interface IParent<T, Id>
{
    Child<T, Id> GetChild();
}

public class Child<T, Id> where T : IParent<T, Id>
{
    public T Parent;
}

我希望任何类继承IParent,并为每个这样的类构造一个Child的成员实例。

T是继承IParent的类,Id是该类父作用域中的枚举。

1 个答案:

答案 0 :(得分:2)

尝试在界面中约束类型T.

public interface IParent<T, Id> where T : IParent<T, Id>
{
    Child<T, Id> GetChild();
}

public class Child<T, Id> where T : IParent<T, Id>
{
    public T Parent;

    public Child<T, Id> GetChild()
    {
        throw new NotImplementedException();
    }
}