【发布时间】:2018-02-11 17:58:58
【问题描述】:
无法从 Ninject.Extensions.Conventions Github page 获取样本之一以工作,版本 3.3.0。 BindDefaultInterface()工作没问题,但是BindSingleInterface(),如下图,返回异常System.InvalidOperationException: 'Sequence contains no elements'。
我知道类似标题的 SO 问题 Cannot get Ninject.Extensions.Conventions to work。这不一样(另外,我的 Program 课程是公开的,这是问题的症结所在)。
这被简化为我认为的最简单的控制台应用程序。
using System;
using Ninject;
using Ninject.Extensions.Conventions;
public class Program
{
static void Main(string[] args)
{
var kernel = new StandardKernel();
kernel.Bind(x => x
.FromThisAssembly()
.SelectAllClasses()
.BindSingleInterface());
var output = kernel.Get<IConsoleOutput>();
output.HelloWorld();
Console.ReadKey();
}
public interface IConsoleOutput
{
void HelloWorld();
}
public class ConsoleOutput : IConsoleOutput
{
public void HelloWorld()
{
Console.WriteLine("Hello world!");
}
}
}
【问题讨论】:
-
基于此 wiki (github.com/ninject/Ninject.Extensions.Conventions/wiki/Overview),您错过了第四步,即 配置。尝试在 BindSingleInterface 方法之后链接
.Configure(b => b.InSingletonScope())并检查它是否有效。
标签: c# .net inversion-of-control ninject