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     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...