1

我只知道如何RegisterResolve新的实例。但是,我不确定如何将现有对象作为参数传递给我想要解析的实例。

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

在我看来,您正在尝试对实体使用依赖注入。这不是最常见的做法,因为与他们可能使用的长期服务相比,系统中可能会有很多人,而且他们的寿命很短。这些服务(例如IFriendFinderIFriendMaker)将使用容器来解析。

更多信息在这里:为什么不使用 IoC 容器来解决实体/业务对象的依赖关系?

于 2012-11-28T12:45:40.157 回答