Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ninject v2和x2B;注入依赖于参数名_C#_.net_Parameters_Dependency Injection_Ninject - Fatal编程技术网

C# Ninject v2和x2B;注入依赖于参数名

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

我知道,对于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而修改我的类继承结构。也许我的例子不好,也可能是左,右;我不想做一个硬核的人。。。