Итак, теперь, когда у нас есть общие Covariance и Contravariance для интерфейсов и делегатов в C #, мне было просто любопытно, если дать Type
, вы можете выяснить ковариацию / контрастность его общих аргументов. Я начал пытаться написать свою собственную реализацию, которая будет просматривать все методы данного типа и проверять, соответствуют ли возвращаемые типы и / или аргументы типам в общих аргументах. Проблема в том, что даже если у меня есть это:
public interface IFoo<T>
{
void DoSomething(T item);
}
используя мою логику, она выглядит, как будто она должна быть контравариантной, но поскольку мы на самом деле не указали:
public interface IFoo<in T>
{
void DoSomething(T item);
}
(параметр in) на самом деле это не противоречиво. Что приводит к моему вопросу: есть ли способ определить дисперсию общих параметров?