Разрешить тип, основанный на знании частей отдельно - PullRequest
0 голосов
/ 04 июля 2011

Кто-нибудь знает способ разрешения объекта из контейнера IOC, особенно Unity 2.0, когда вы знаете класс и его универсальный по отдельности?

Простой пример

public class DoSomeWork {bla}
public class Execute1<DoSomeWork> : IExecute {bla}
public class Execute2<DoSomeWork> : IExecute {bla}

Метод

public void go(DoSomeWork k) 
{

   unityContainer.ResolveAll(IExecute<DoSomeWork>????)
}

внутри контейнера Execute1<DoSomeWork>:IExecute и Execute2<DoSomeWork>:IExecute

На основе DoSomeWork мне нужно разрешить все Execute<DoSomeWork> классы.

Имеет ли это смысл?

Спасибо!

1 Ответ

2 голосов
/ 04 июля 2011

Вы можете использовать метод Type.MakeGenericType для создания типа на основе универсального типа с аргументом определенного типа:

public interface IExecute<T> { }

...

Type targetType = ...;
Type specificType = typeof(IExecute<>).MakeGenericType(targetType);

Затем используйте этот тип, чтобы запросить у IOC конкретный экземпляр.

...