Я пытаюсь использовать LightInject и MediatR для создания общих обработчиков запросов. В принципе, у меня есть типы, как следующее:LightInject не разрешает унаследованные общие типы
public class SomeType { }
public class InheritedType : SomeType { }
public class Handler : IAsyncRequestHandler<SomeType, SomeResponseType> { }
И я зарегистрировал мой Handler
типа в мой LightInject контейнер таким образом:
registry.RegisterAssembly(typeof(SomeType).Assembly, (s, type) =>
!s.IsClass && type.IsAssignableToGenericType(typeof(IAsyncRequestHandler<,>)
);
Однако, когда я пытаюсь позвонить моему посреднику для реализация IAsyncRequestHandler<InheritedType,SomeResponseType>
, он терпит неудачу. Я бы ожидал получить мой зарегистрированный Handler
с InheritedType
осуществляет SomeType
.
Я делаю что-то неправильно здесь, или есть какой-либо способ в LightInject для достижения описанного выше поведения?
Сообщите мне, если это неясно, и я могу попытаться предоставить дополнительную информацию. Благодаря!
Я закончил работать aroudn ней другим способом, чтобы избежать дополнительного слоя дженериков, но хорошая информация знать, спасибо! И спасибо за огромную библиотеку! – agc93