可以知道/获取父类中的子类吗?我使用Autofac
作为DI,而ILogger logger
将由Autofac
提供,所以logger
不会是null
(我没有在这里复制该代码以保持简短)
有许多child
个类(在一个目录中),它们继承自Parent
个抽象类.我想在父类中做一次"logger init"(干燥).当我获得logger.GetCurrentClassLogger<this>()
对象时,我try 使用this
关键字,但它似乎不正确,因为它不会构建.
以下是一个示例代码-
public ILogger GetCurrentClassLogger<T>() { return Log.ForContext<T>(); }
public class Parent() {
protected Serilog.ILogger LoggerDefinedInParentClass;
public Parent(Serilog.ILogger logger) {
LoggerDefinedInParentClass = logger.GetCurrentClassLogger<Parent>();
// Hoping to use <Child1> or <Child2> GetCurrentClassLogger<-child class->. Tried <this>, but it might not be right as the build fails
//
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, ParentMethod1");
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, ParentMethod2");
}
}
public class Child1() : Parent {
public Child1(Serilog.ILogger logger): base(logger) {
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, Child1-1");
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, Child1-2");
}
}
public class Child2() : Parent {
public Child2(Serilog.ILogger logger): base(logger) {
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, Child2-1");
}
public void ParentMethod1() {
LoggerDefinedInParentClass.Information("Hello, Child2-2");
}
}
我希望打印日志(log)行,就好像它们来自Child1
或Child2
个子元素的班级,但似乎弄不明白.
有谁有主意吗?提亚