2011-07-04 4 views
0

Quelqu'un sait-il comment résoudre un objet à partir d'un conteneur IOC, en particulier Unity 2.0, lorsque vous connaissez la classe et son générique séparément?Résoudre le type basé sur la connaissance des parties séparément

Exemple simple

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

Une méthode

public void go(DoSomeWork k) 
{ 

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

à l'intérieur du conteneur est Execute1<DoSomeWork>:IExecute et Execute2<DoSomeWork>:IExecute

Sur la base DoSomeWork je dois résoudre tous les Execute<DoSomeWork> classes.

Est-ce que cela a du sens?

Merci!

Répondre

2

Vous pouvez utiliser la méthode Type.MakeGenericType pour créer un type basé sur un type générique avec un argument de type spécifique:

public interface IExecute<T> { } 

... 

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

Ensuite, utilisez ce type de demander au CIO pour l'instance spécifique.

+0

Parfait !!!!!!!!!!!!!!! Merci! – William

Questions connexes