Мне было интересно, поддерживает ли C# неявное обнаружение типа для генериков классов.Неявное обнаружение типа для генериков
Например, такая функциональность существует в методах методов.
я могу иметь следующий метод:
public void Foo<T>(T obj);
И называть это так:
int n = 0;
instance.Foo(n);
Как вы можете видеть, я не указав <int>
родовое ограничение. Это неявно обнаружено, потому что я передал значение int
.
Я хочу сделать что-то похож на уровне определения класса:
internal interface IPersistenceStrategy<E, T> : IDisposable
where E : UniqueEntity<T>
Я хочу, чтобы определить как IPersistenceStrategy<MyEntity>
, где MyEntity is an UniqueEntity<int>
.
Как вы можете видеть, тип типа T
, неявно обнаружен с MyEntity
.
Однако это не работает. Я должен поставить T
параметров в явном виде:
IPersistenceStrategy<MyEntity, int> myStrategy;
Почему эта функция не работает? Является ли компилятор C# недостаточно умным, чтобы автоматически обнаружить мой тип param?
Есть ли способ выполнить то, что я ищу?
Нет, вы не можете сделать это. – Lee
@ Lee Почему бы и нет? :( –
Просто потому, что это не в спецификации. –