Я создал основное приложение .net и использую serilog в качестве логгера. Нинъект используется для разрешения зависимостей. У меня есть следующий код
using MyApplication.Injection;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Ninject;
using Serilog;
using System;
using System.Threading;
using System.Threading.Tasks;
namespace MyApplication
{
class Program : IHostedService
{
private IKernel _kernel;
private IDisposable _subscriber;
public static async Task Main(string[] args)
{
var builder = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File("consoleapp.log")
.CreateLogger();
services.AddLogging(configure => configure.AddSerilog());
services.AddSingleton<IHostedService, Program>();
});
await builder.RunConsoleAsync();
}
public Task StartAsync(CancellationToken cancellationToken)
{
Console.WriteLine("Starting Kore.LineSplitter Service");
_kernel = new StandardKernel(new DInjection());
_kernel.Bind<IMYService>().To<MYService>();
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
Console.WriteLine("Stopping.");
if (_kernel != null)
{
_kernel.Dispose();
_kernel = null;
}
return Task.CompletedTask;
}
}
}
using Microsoft.Extensions.Logging;
public class MYService: IMYService
{
private readonly ILogger _logger;
public LineSplitterManager(ILogger<MYService> logger)
{
_logger = logger;
}
public void SayHello(ProcessCdrFile message)
{
_logger.LogInformation("Starting my application");
}
}
Но я получил ошибку во время выполнения, как это
Ninject.ActivationException: 'Error activating ILogger{MYService}
No matching bindings are available, and the type is not self-bindable.