繼承出於某種原因,我爭奪用通用的基類按如下方式實現從一個普通的接口屬性:通用基類從通用接口
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
}
現在我有一個新的父衍生和子對象如下:
public class MyChild : IChild { }
public class MyParent : ParentBase<MyChild>, IParent<IChild>
{
public MyParent(MyChild child)
: base(child)
{
}
}
餘萬噸至實例,並得到了抽象(接口類型)傳遞給消費者如下:
IParent<IChild> parent = new MyParent(new MyChild());
但出於某種原因,我不能正確實現年擄,儘管我對ParentBase中定義的屬性public TChild Child
中,編譯器說它沒有實現,即使我嘗試明確實現。 正如你所看到的約束是通過基類的所有道路。
您使用的是什麼版本的C#? – Oded 2012-04-17 10:53:00
我正在使用C#4(.NET 4) – Andre 2012-04-17 10:54:06