Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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中按名称绑定所有具体实现_C#_Ninject_Ninject Extensions - Fatal编程技术网

C# 在Ninject中按名称绑定所有具体实现

C# 在Ninject中按名称绑定所有具体实现,c#,ninject,ninject-extensions,C#,Ninject,Ninject Extensions,我有一个接口IAdapdor,还有几个具体的实现。使用Ninject 3.0,我按名称绑定它们: IKernel kernel = new StandardKernel(); kernel.Bind<IAdapdor>().To<Adaptor1>().Named("Adaptor1"); kernel.Bind<IAdapdor>().To<Adaptor2>().Named("Adaptor2"); ... IKernel内核=新的标准内核

我有一个接口
IAdapdor
,还有几个具体的实现。使用Ninject 3.0,我按名称绑定它们:

IKernel kernel = new StandardKernel();

kernel.Bind<IAdapdor>().To<Adaptor1>().Named("Adaptor1");
kernel.Bind<IAdapdor>().To<Adaptor2>().Named("Adaptor2");
...
IKernel内核=新的标准内核();
kernel.Bind().To

更具体地说,我在寻找以下内容:

kernel.Bind(x => x.FromThisAssembly()
                  .SelectAllClasses()
                  .InheritedFrom<IAdapdor>()
                  .BindByClassName()); // <-- BindByClassName() does not really exist
kernel.Bind(x=>x.FromThisAssembly()
.SelectAllClasses()
.继承自()

.BindByClassName());// 您可以使用自定义约定创建的绑定。因此,您可以使用它向名为
注册绑定:

kernel.Bind(x => x
    .FromThisAssembly()
    .SelectAllClasses().InheritedFrom<IAdapdor>()
    .BindAllInterfaces()
    .Configure((b, c) => b.Named(c.Name)));
kernel.Bind(x=>x
.FromThisAssembly()中的
.SelectAllClasses().InheritedFrom()
.BindAllInterfaces()
.Configure((b,c)=>b.Named(c.Name));

我很想知道这个惯例是什么。。。因为我没看到。约定扩展并不能解决所有问题。。。有时候你需要显式地绑定东西。@Simon Whitehead——据我所知,我应该能够在一行约定中完成这项工作。我将编辑问题以反映这一点……这是否考虑了数字因素?
c.Name
将获得您的类型名称,因此
adapter1
adapter2
。但是你可以根据beging的类型在那里写任何你得到的
“adapter1”
“adapter2”
registered@nemesv好的!我知道这应该很简单。。。谢谢