如何解决IoC解决非引用依赖性
| 现在我有一个类似于下面的类型结构interface IFoo { }
class FooA : IFoo { }
class FooB : IFoo { }
//not a builder. generates based on conditions
interface IFooEmitter<TFoo>
{
TFoo EmitFoo();
}
abstract class FooEmitterBase<TFoo> : IFooEmitter<TFoo> { }
class FooAEmitter : FooEmitterBase<FooA> { }
[RequiresEmitter(typeof(FooAEmitter))]
class FooBEmitter : FooEmitterBase<FooB> { }
我想在某个地方创建FooBEmitter ...
var b = FooEmitterManager.CreateAndStore<FooBEmitter>();
Create()在FooBEmitter上看到RequiresEmitter属性,并递归创建一个FooAEmitter。
//continued from above
var a = FooEmitterManager.CreateAndStore<FooAEmitter>();
Debug.Assert(a == b); // true
FooBEmitter通常不依赖于FooAEmitter(存储对FooAEmitter的引用)。这取决于
正在构造FooAEmitter并将其存储在FooEmitterManager中
FooAEmitter将生成的FooA \
有什么方法可以使用流行的.NET IoC容器(例如Castle或NInject)来简化这种依赖关系感知的创建?
解决方法
这可能是您正在寻找Ninject的内容:https://github.com/ninject/ninject.extensions.dependencycreation
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。