出于某种原因,我正在努力通过使用通用基类从通用接口实现属性,如下所示:
public interface IParent<TChild> where TChild : IChild
{
TChild Child { get; }
}
public interface IChild { }
然后我有一个基类:
public class ParentBase<TChild> : IParent<TChild> where TChild : IChild
{
private TChild _child;
public ParentBase(TChild child)
{
this._child = child;
}
#region IParent<TChild> Members
public TChild Child
{
get { return _child; }
}
#endregion
}
现在我有一个新的 Parent Derivative 和 Child 对象,如下所示:
public class MyChild : IChild { }
public class MyParent : ParentBase<MyChild>, IParent<IChild>
{
public MyParent(MyChild child)
: base(child)
{
}
}
我想实例化它并让抽象(接口类型)传递给消费者,如下所示:
IParent<IChild> parent = new MyParent(new MyChild());
但是由于某种原因,我无法正确实现 TChild,即使我已经public TChild Child
在 ParentBase 上定义了该属性,编译器仍说它没有实现,即使我尝试显式实现。如您所见,约束一直到基类。