У меня есть следующая структура класса:
public class A : AInterface { }
public interface AInterface { }
public class B<T> : BInterface<T> where T : AInterface
{
public T Element { get; set; }
}
public interface BInterface<T> where T : AInterface
{
T Element { get; set; }
}
public class Y : B<A> { }
public class Z<T> where T : BInterface<AInterface> {}
public class Test
{
public Test()
{
Z<Y> z = new Z<Y>();
}
}
Это дает мне следующую ошибку компиляции в С# 4.0. Тип «Test.Y» нельзя использовать в качестве параметра типа «T» в универсальном типе или методе «Test.Z». Неявное преобразование ссылок из «Test.Y» в «Test.BInterface» отсутствует.
Я думал, что ковариация в дженериках должна заставить это работать? Любая помощь будет оценена.