【发布时间】:2021-11-23 20:20:34
【问题描述】:
刚开始使用依赖注入和接口,我遇到了不知道如何解决的情况。
我正在构建一个控制台应用程序,我需要在其中使用 serilog,并从 appsettings.json 获取设置
我有 3 个 .cs 文件。
Program.cs:
static void Main(string[] args)
{
Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
var builder = new ConfigurationBuilder();
BuildConfig(builder);
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Build())
.Enrich.FromLogContext()
.CreateLogger();
Log.Logger.Information("Starting Datacollection");
var host = Host.CreateDefaultBuilder()
.ConfigureServices((context, services) =>
{
services.AddTransient<IMyClass, MyClass>();
})
.UseSerilog()
.Build();
var svcMyClass = ActivatorUtilities.CreateInstance<MyClass>(host.Services);
svcMyClass.MyMethod();
}
IMyClass.cs:
public interface IMyClass
{
void MyMethod();
}
和MyClass.cs:
public class MyClass : IMyClass
{
private readonly ILogger<MyClass> _log;
private readonly IConfiguration _config;
public MyClass(ILogger<MyClass> log, IConfiguration config)
{
_log = log;
_config = config;
}
public void MyMethod()
{
//Do something
}
}
所有这些都很好用。我可以使用 _log 和 _config 从 MyClass 中访问 Serilog 和配置。
但是现在需要从 MyMethod 中调用新类 (MyClass2) 中的方法,并且 MyClass2 中的方法需要能够使用 Serilog 和配置文件。
最好的方法是什么?
【问题讨论】:
-
您能否发布一下您现在的问题以及您尝试的代码。 “从 MyMethod 中调用新类 (MyClass2) 的方法”没有多大意义。
标签: c# .net dependency-injection