2016-09-29 10 views
0

私が持っている依存関係:工場で作成されたオブジェクトの依存関係をどのように解決するか?例えば

MyClassのオブジェクトに注入
public interface IMyDependency 
{ 
} 

public class MyDependency : IMyDependency 
{ 
} 

:また

public interface IMyInterface 
{ 
} 

public class MyClass : IMyInterface 
{ 
    [Dependency] 
    public IMyDependency MyDependency { get; set; } 
} 

I MyClassのインスタンスを作成するファクトリを、持っている:

public interface IFactory 
{ 
    IMyInterface CreateMyObject(); 
} 


public class Factory : IFactory 
{ 
    public IMyInterface CreateMyObject() 
    { 
     // some checks before creation 
     // for. ex check if this type of object supported by OS and thow exception if not 

     return new MyClass(); 
    } 
} 

... 
container.RegisterType<IFactory, Factory>(); 

私はMyClassのを作成した場合私の依存関係は解決されません "新しい"キーワードでインスタンス。または、私はFactoryから脱出し、ロジックをMyClassのコンストラクタに移動する必要がありますか?そして、container.RegisterType()のようなコンテナに登録したら?

答えて

0

作成するインスタンスとは独立した依存関係の場合は、それらを工場に注入し、必要になるまで保存します。

作成のコンテキストに依存しないが、作成されたインスタンスごとに再作成する必要がある依存については、ファクトリをファクトリに挿入して格納します。

作成のコンテキストに依存する依存関係については、ファクトリのCreateメソッドに渡します。

関連する問題