Не совсем уверен, как сформулировать вопрос, потому что это "почему это не работает?" тип запроса.
Я уменьшил свою конкретную проблему до этого кода:
public interface IFoo
{
}
public class Foo : IFoo
{
}
public class Bar<T> where T : IFoo
{
public Bar(T t)
{
}
public Bar()
: this(new Foo()) // cannot convert from 'Foo' to 'T'
{
}
}
Теперь общий тип T
в классе Bar<T>
должен реализовать IFoo. Итак, почему компилятор дает мне ошибку в комментарии? Разумеется, экземпляр Foo является IFoo и поэтому может быть передан как представитель типичного типа T
?
Является ли это компилятором или мне что-то не хватает?