Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Funq将现有对象作为参数传递_C#_Dependency Injection_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack_Funq - Fatal编程技术网 servicestack,funq,C#,Dependency Injection,servicestack,Funq" /> servicestack,funq,C#,Dependency Injection,servicestack,Funq" />

C# Funq将现有对象作为参数传递

C# Funq将现有对象作为参数传递,c#,dependency-injection,servicestack,funq,C#,Dependency Injection,servicestack,Funq,我只知道如何注册和解析新实例。但是,我不知道如何将现有对象作为参数传递给我要解析的实例 问题1: 我想了一会儿,但是没有足够的脑汁来解决这个问题。请帮助,谢谢:)在我看来,您正在尝试对实体使用依赖项注入。这不是最常见的做法,因为系统中可能会有很多人,与他们可能使用的长期服务相比,他们的寿命很短。这些服务(例如IFriendFinder和IFriendMaker)将使用容器进行解析 这里的更多信息:在我看来,您正在尝试对实体使用依赖项注入。这不是最常见的做法,因为系统中可能会有很多人,与他们可能使

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

问题1:


我想了一会儿,但是没有足够的脑汁来解决这个问题。请帮助,谢谢:)

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


这里的更多信息:

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


更多信息:哦,我差点忘了打印工厂。这可能是我的答案吗?但我仍然不明白为什么在实体上进行di是个坏主意?@Tom:这与实体的模糊性及其所扮演的角色有关。您不能要求容器“给我一个人”,因为系统中可能有数千人。容器管理服务,而人员不是服务;它是一个实体。相反,你可以问一个工作单位“给我34个人”。
I工作单元是一种服务,这种工作单元管理着人的一生。我正试图用我的方式来理解这一点。似乎任何可以是单例或1对1关系的实例都适合DI。如果一个类有多个实例,那么它对DI不好。哦,我差点忘了类型化工厂。这可能是我的答案吗?但我仍然不明白为什么在实体上进行di是个坏主意?@Tom:这与实体的模糊性及其所扮演的角色有关。您不能要求容器“给我一个人”,因为系统中可能有数千人。容器管理服务,而人员不是服务;它是一个实体。相反,你可以问一个工作单位“给我34个人”。
I工作单元是一种服务,这种工作单元管理着人的一生。我正试图用我的方式来理解这一点。似乎任何可以是单例或1对1关系的实例都适合DI。如果一个类有多个实例,那么它对DI不好。
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)?
  }
  //...
}
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; 
  }
}