Por alguna razón que estoy luchando para implementar una propiedad de una interfaz genérica mediante el uso de una clase base genérica de la siguiente manera:genérico Clase base que hereda de la interfaz genérica
public interface IParent<TChild> where TChild : IChild
{
TChild Child { get; }
}
public interface IChild { }
entonces tengo una clase base:
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
}
ahora tengo un objeto derivado y el niño nuevo padre de la siguiente manera:
public class MyChild : IChild { }
public class MyParent : ParentBase<MyChild>, IParent<IChild>
{
public MyParent(MyChild child)
: base(child)
{
}
}
I wan t instanciarlo y obtener el (tipo de interfaz) abstracta para pasar a los consumidores de la siguiente manera:
IParent<IChild> parent = new MyParent(new MyChild());
Pero por alguna razón no se puede poner en práctica el TChild correctamente, a pesar de que he definido la propiedad public TChild Child
en el ParentBase, la el compilador dice que no está implementado, incluso si intento implementarlo explícitamente. Como puede ver, las restricciones llegan hasta la clase base.
¿Qué versión de C# estás usando? – Oded
Estoy usando C# 4 (.NET 4) – Andre