У меня есть три объявления класса, как и вышеЕсть ли способ вставить процесс создания экземпляра autofac?
[Plug("hello")]
public class Plug1 : IPlug{}
[Plug("hello")]
public class Plug2 : IPlug{}
[Plug("world")]
public class Plug3 : IPlug{}
Когда я использую container.Resolve<IEnumerable<IPlug>>()
, чтобы решить, я получаю все экземпляр, который реализует интерфейс IPlug
, однако, я хочу, чтобы получить первый и второй (или в мире, который экземпляр был помечен атрибутом Plug("hello")
).
Есть ли способ достичь этого?
Я хотел бы избежать использования
container.Resolve<IEnumerable<IPlug>>()
.Where(t => t.FirstAttribute<Plug>() != null
&& t.FirstAttribute<Plug>().Id == "Hello")
Я всегда чувствую, что это не лучшая практика, как результат работы.
спасибо. это хороший выбор. – linus