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