2017-10-16 54 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()));