(Ninject 3+) の Ninject.Extensions.Conventions を機能させようとしていますが、運がありません。見つかったサンプル コンソール アプリにまで煮詰めましたが、それを実行することさえできません。ここに私が持っているものがあります:
class Program
{
static void Main(string[] args)
{
var kernel = new StandardKernel();
kernel.Bind(x => x
.FromThisAssembly()
.SelectAllClasses()
.BindAllInterfaces());
var output = kernel.Get<IConsoleOutput>();
output.HelloWorld();
var service = kernel.Get<Service>();
service.OutputToConsole();
Console.ReadLine();
}
public interface IConsoleOutput
{
void HelloWorld();
}
public class ConsoleOutput : IConsoleOutput
{
public void HelloWorld()
{
Console.WriteLine("Hello world!");
}
}
public class Service
{
private readonly IConsoleOutput _output;
public Service(IConsoleOutput output)
{
_output = output;
}
public void OutputToConsole()
{
_output.HelloWorld();
}
}
}
FromAssembliesMatching、SelectAllTypes、BindDefaultInterfacesなどのさまざまな組み合わせも試しました 。すべてが Error activate をスローします。一致するバインディングは利用できず、タイプは自己バインディング可能ではありません。
正気を保つために、手動バインディングを行う場合:
kernel.Bind<IConsoleOutput>().To<ConsoleOutput>();
すべてがうまく機能します。明らかに、何かが足りないだけです。