У меня есть интерфейс IService
и многие реализации IService в другой сборке. Мне нужно зарегистрировать все реализации как службу для типов, которые находятся в цепочке наследования между IService и конкретной реализацией IService. Например:Регистрация типов с StructureMap методом сканирования
public interface IService{}
public abstract class BaseService<T>: IService{}
А в другой сборке:
public class SomeSpecialService: BaseService<SomeType>{}
public class AnotherSpecialService: BaseService<AnotherType>{}
Итак, мне нужно зарегистрировать SomeSpecialService
как сервис для BaseService<SomeType>
и AnotherSpecialService
как сервис для BaseService<AnotherType>
.
В настоящее время я делаю это посредством отражения с регистрацией каждой реализации по одному.
1) Возможно ли использование выражения Scan()?
2) Возможно ли использование выражения Scan(), если SomeSpecialService является внутренним (непубличным) классом в другой сборке?
Что делать с регистрацией внутренних типов из другой сборки? – Albert
@Albert, к сожалению, я не могу придумать способ автоматической регистрации внутренних типов. Я не думаю, что это возможно, поэтому вам придется создавать типы, необходимые для регистрации общественности (если это возможно). – LetMeCodeThis