2017-10-16 8 views
0

プライベートコンストラクタとクラスのインスタンスを返す静的なCreateメソッドを持つクラスがあります。クラスのインスタンスが要求されたときに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

オブジェクトの最終的な種類がわからないときは、静的メソッドを呼び出すことはできません。ポリモーリズムとジェネリックスを静的に使うことはできません。 あなたは別の方法をとる必要があると思います。バインディング情報(各拒絶の工場へのポインタを含む)を辞書に格納することができます。また、辞書内の特定のファクトリを検索するジェネリッククラスを使用して新しいインスタンスを作成し、メソッドを呼び出して新しいインスタンスを作成します。 Zenject(diプラグイン)は辞書でそれを行います。 –

答えて

1

それは

container.RegisterType<IService,Service>(new InjectionFactory(c => Service.Create())); 
関連する問題