C# Ninject v2和x2B;注入依赖于参数名
我知道,对于Ninject 1,可以根据参数名给出特定实例 例如 公共SomeClass(左轴对称,右轴对称) {} 将ISomething向左解析为默认ISomething,但将ISomething向右解析为其他绑定 如何使用Ninject 2+执行此操作 注意:我不想使用[Named(“XZ”)],因为这会迫使我将应用程序的主dll设置为Ninject的依赖项。现在我有一个独立的DLL CompositionRoot,它依赖于Ninject,没有其他东西:我的主DLL可以在没有Ninject的情况下使用。我想保持这样C# Ninject v2和x2B;注入依赖于参数名,c#,.net,parameters,dependency-injection,ninject,C#,.net,Parameters,Dependency Injection,Ninject,我知道,对于Ninject 1,可以根据参数名给出特定实例 例如 公共SomeClass(左轴对称,右轴对称) {} 将ISomething向左解析为默认ISomething,但将ISomething向右解析为其他绑定 如何使用Ninject 2+执行此操作 注意:我不想使用[Named(“XZ”)],因为这会迫使我将应用程序的主dll设置为Ninject的依赖项。现在我有一个独立的DLL CompositionRoot,它依赖于Ninject,没有其他东西:我的主DLL可以在没有Ninject
编辑:我更新了示例,在第一个答案之后使用左/右,而不是简单/复杂。我不想在继承结构中硬编码此依赖项。为什么不创建派生接口
ISimpleSomething
和IComplexSomething
通过这种方式,您可以为每个应用程序公开额外的功能
interface ISomething { ... }
interface IComplexSomething : ISomething { ... }
interface ISimpleSomething : ISomething { ... }
为什么不创建派生接口
ISimpleSomething
和IComplexSomething
通过这种方式,您可以为每个应用程序公开额外的功能
interface ISomething { ... }
interface IComplexSomething : ISomething { ... }
interface ISimpleSomething : ISomething { ... }
我想出来了:
Bind<ISomething >().To<LeftSomething>().When(a => a.Target.Name == "left");
Bind().To().When(a=>a.Target.Name==“left”);
我想出来了:
Bind<ISomething >().To<LeftSomething>().When(a => a.Target.Name == "left");
Bind().To().When(a=>a.Target.Name==“left”);
因为我不想仅仅为了满足Ninject而修改我的类继承结构。也许我的例子不好,也可能是左,右;我不想硬核ISomethingRight…因为我不想仅仅为了满足Ninject而修改我的类继承结构。也许我的例子不好,也可能是左,右;我不想做一个硬核的人。。。