【发布时间】:2011-06-10 09:19:26
【问题描述】:
我有两个示例类
class ClassToResolve
{
private List<CollectionItem> _coll;
public ClassToResolve(List<CollectionItem> coll)
{
_coll = coll;
}
}
class CollectionItem
{
//...
}
我需要解决 ClassToResolve
var classToResolve = new ClassToResolve(
new List<CollectionItem>()
{
new CollectionItem(),
new CollectionItem(),
new CollectionItem()
}
);
现在我以某种方式解决它
var classToResolve = new ClassToResolve(
new List<CollectionItem>()
{
unity.Resolve<CollectionItem>(),
unity.Resolve<CollectionItem>(),
unity.Resolve<CollectionItem>()
}
);
有没有办法通过 Unity 使用动态注册来解决 ClassToResolve?
【问题讨论】:
-
你的例子没有多大意义。为什么要向
ClassToResolve注入多个相同的实例? -
它们不相同。仅在示例中它们是相同的。我简化了这个例子。事实上,这个从一个基类/接口继承/实现的对象列表,或者不同配置对象的列表。这与模式设计“Director”非常相似,其中 ClassToResolve = Director 和 CollectionItem=Strategy(如 IRunnable)
-
都是同一个接口还是不同接口?你实际上想要发生什么?
-
这是一个非常常见的用例。一个对象使用其他对象的列表。但是问题已经解决了。
标签: c# .net dependency-injection inversion-of-control unity-container