По некоторым причинам я сражаю реализовать свойство из общего интерфейса с помощью общего базового класса следующим образом:Generic Базового класс наследует от общего интерфейса
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());
Но по какой-то причине я не могу реализовать TChild правильно, даже если я определил свойство public TChild Child
на ParentBase, то компилятор говорит, что он не реализован, даже если я пытаюсь реализовать явно. Как вы можете видеть, ограничения доходят до базового класса.
Какую версию C# вы используете? – Oded
Я использую C# 4 (.NET 4) – Andre