2017-10-16 8 views
0

J'ai une classe avec un constructeur privé et une méthode statique Create qui retourne une instance de la classe, ce que j'aimerais que Unity appelle cette méthode lorsqu'une instance de la classe est demandée.injection de dépendance avec méthode de création statique

exemple:

public interface IService 
{ 
    void MethodA(); 
} 

public class Service: IService 
{ 
    private Service(){} 

    public static Service Create() 
    { 
     return new Service(); 
    } 
} 
+0

Que voulez-vous dire par "demandé"? Pouvez-vous en dire plus sur vos besoins? –

+0

Disons que j'ai alors une classe qui a une dépendance sur IService, je veux que Unity appelle la méthode statique Create pour résoudre la dépendance. – franklores

+0

Vous ne pouvez pas appeler une méthode statique tant que vous ne connaissez pas le type final d'objet. Et vous ne pouvez pas utiliser polymorhism et génériques avec statique. Je pense que vous devez aller d'une autre façon. Vous pouvez stocker des informations de liaison (y compris des pointeurs vers des fabriques pour chaque dénégation) dans le dictionnaire. Et créer une nouvelle instance en utilisant une classe générique qui trouve une fabrique spécifique dans un dictionnaire, et l'appelle méthode pour créer une nouvelle instance. Zenject (di pluggin pour l'unité) le fait avec des dictionnaires. –

Répondre

1

Il était en fait assez simple, l'inscription est comme suit

container.RegisterType<IService,Service>(new InjectionFactory(c => Service.Create()));