1

Register私は方法とResolve新しいインスタンスしか知りません。ただし、解決したいインスタンスに既存のオブジェクトをパラメーターとして渡す方法がわかりません。

Q1:

interface IPerson {
  person FindAnOtherPerson();
  void MakeFriends();
}
class Person : IPerson {
  private List<Person> _people;
  //...
  void MakeFriends() {
    var peter = FindAnOtherPerson(); //from _people 
    var rel = new Relationship(this, peter); //build a relationship
    //how to pass params? something like Resolve<IRelationship>(this, peter)?
  }
  //...
}

Q2:

interface IParent { }
interface IChild { }
class Parent : IParent {
  private IChild _child;
  public Parent() {
    _child = new Child(this); //parent knows child    
    //With DI, how do I resolve child and pass 'this' to child?
  }
}
class Child : IChild {
  private IParent _parent;
  public Child(IParent p) { //child knows parent
    _parent = p; 
  }
}

私はしばらくこれについて考えましたが、それを解決するのに十分な脳液ではありませんでした。おかげで助けてください:)

4

1 に答える 1

1

エンティティに依存性注入を使用しようとしているようです。システムにはおそらく多くの人がいて、彼らが使用する可能性のある長命のサービスと比較して短命であるため、これは最も一般的なことではありません。これらのサービス ( や などIFriendFinder)IFriendMakerは、コンテナーを使用して解決されます。

詳細はこちら:エンティティ/ビジネス オブジェクトの依存関係を解決するために IC コンテナーを使用しないのはなぜですか?

于 2012-11-28T12:45:40.157 に答える