2017-10-16 56 views
0

我有一个私有构造函数和一个静态创建方法,返回一个类的实例,我希望Unity在请求类的实例时调用此方法。依赖注入与静态创建方法

例如:

public interface IService 
{ 
    void MethodA(); 
} 

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

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

你所说的 “请求” 的意思是?你能告诉更多关于你的需求吗? –

+0

假设我有一个依赖于IService的类,我希望Unity调用静态的Create方法来解析依赖关系。 – franklores

+0

当你不知道最终类型的对象时,你不能调用静态方法。你不能用静态polymorhism和泛型。 我认为你需要另辟蹊径。您可以在字典中存储绑定信息(包括指向工厂的指针)。并通过使用在字典中查找特定工厂的泛型类来创建任何新实例,并将其称为创建新实例的方法。 Zenject(用于统一的插件)使用字典进行。 –

回答

1

它实际上很简单,注册是如下

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