C# 为什么在接口中有抽象类和抽象变量/方法?

C# 为什么在接口中有抽象类和抽象变量/方法?,c#,asp.net,interface,abstract-class,C#,Asp.net,Interface,Abstract Class,另一个团队给了我一个接口,将其包含在我的数据库日志代码中。该接口仅填充抽象类和变量/方法。这样做的原因是什么 它没有任何逻辑。我只是在扩展记录器时覆盖跟踪和isTraceEnabled 我的头脑无法控制它。实现只返回他们期望的特定值的方法有什么意义 public abstract class Logger { public abstract void trace(String message); public abstract bool isTraceEnabled { get;

另一个团队给了我一个接口,将其包含在我的数据库日志代码中。该接口仅填充抽象类和变量/方法。这样做的原因是什么

它没有任何逻辑。我只是在扩展记录器时覆盖跟踪和isTraceEnabled

我的头脑无法控制它。实现只返回他们期望的特定值的方法有什么意义

public abstract class Logger {
    public abstract void trace(String message);
    public abstract bool isTraceEnabled { get; }
}
当他们给你这样的界面时,它意味着两件事之一:

如果他们从您的库请求日志记录,而您的库负责执行数据库日志记录,那么您需要定义一个扩展Logger的类,并提供其每个抽象方法的实现。 如果您使用Logger执行其库提供给您的日志记录,那么它们应该为您提供一种方法来获取扩展抽象Logger类的类的实例。在这种情况下,您根本不应该扩展这个类:您应该预先获取它的一个实例,将它存储在Logger类型的变量中,然后编程到它的接口。 当他们给你这样的界面时,它意味着两件事之一:

如果他们从您的库请求日志记录,而您的库负责执行数据库日志记录,那么您需要定义一个扩展Logger的类,并提供其每个抽象方法的实现。 如果您使用Logger执行其库提供给您的日志记录,那么它们应该为您提供一种方法来获取扩展抽象Logger类的类的实例。在这种情况下,您根本不应该扩展这个类:您应该预先获取它的一个实例,将它存储在Logger类型的变量中,然后编程到它的接口。
我会要求他们提供一个具体的类,作为预期如何使用的示例。我会要求他们提供一个具体类,作为预期如何使用的示例。我相信这是第一点。我扩展了logger并实现了每个抽象方法。我的方法没有任何作用,因为我不知道它们应该做什么。trace方法可以打印我想要的任何看起来不正确的东西。也许他们希望我知道输出应该是什么?..@DavidLeverett如果他们希望你做DB日志记录,那么你的实现应该做DB日志记录,而不是打印任何东西。我推测他们希望你控制跟踪和存储日志记录。我猜他们要求你在某个地方提供一个Logger子类的实例?他们可能正在检查isTraceEnabled属性是否为true,如果为true,则调用trace方法,其中包含您应该在某处记录的信息。如果其他操作失败,请询问向您提供记录器的团队他们的建议,或者,如果他们有任何其他使用记录器的团队通常做的事情的例子,我相信这是他的第一点。我扩展了logger并实现了每个抽象方法。我的方法没有任何作用,因为我不知道它们应该做什么。trace方法可以打印我想要的任何看起来不正确的东西。也许他们希望我知道输出应该是什么?..@DavidLeverett如果他们希望你做DB日志记录,那么你的实现应该做DB日志记录,而不是打印任何东西。我推测他们希望你控制跟踪和存储日志记录。我猜他们要求你在某个地方提供一个Logger子类的实例?他们可能正在检查isTraceEnabled属性是否为true,如果为true,则调用trace方法,并提供您应该记录在某处的信息。如果其他操作失败,请询问向您提供记录器的团队他们的建议,或者询问他们是否有使用记录器的其他团队通常做的事情的示例。