Так что у меня есть такой код.
public interface IGeoDataSet<out T> : IDataSet
where T : IGeoPrimitive<IGeoPrimitiveContent>
{
IEnumerable<T> Items { get; }
}
public interface IDataSet { }
public interface IGeoPrimitive<T> : IPrimitive
where T : IGeoPrimitiveContent
{
T Content { get; }
}
public interface IPrimitive { }
public interface IGeoPrimitiveContent { }
И такое дополнение для предыдущих интерфейсов.
public class TriangleDataSet : IGeoDataSet<Triangle>
{
public IEnumerable<Triangle> Items { get; private set; }
}
public class Triangle : IGeoPrimitive<TriangleContent>
{
public TriangleContent Content { get; private set; }
}
public class TriangleContent : IGeoPrimitiveContent { }
Когда я пытаюсь скомпилировать этот код, у меня появляется ошибка:
The type '.Triangle' cannot be used as type parameter 'T' in the generic type or method '.IGeoDataSet<T>'. There is no implicit reference conversion from '.Triangle' to '.IGeoPrimitive<.IGeoPrimitiveContent>'.
Я не могу понять, почему, может быть, кто-то знает, в чем проблема?
Br,
Jevgenij