appsettings.json 中一个界面内的配置界面
Configuration Interface inside an interface in appsettings.json
我正在设计一个基本的记录器,只是为了教育目的我已经按照下面的方式设计了配置界面
public interface ILoggerConfiguration
{
string LoggingPattern { get; set; }
IFileLoggerConfiguration FileLogger { get; set; }
}
public interface IFileLoggerConfiguration
{
string FileName { get; set; }
string DirectoryName { get; set; }
string FileExtension { get; set; }
}
public class LoggerConfiguration : ILoggerConfiguration
{
string LoggingPattern { get; set; }
IFileLoggerConfiguration FileLogger { get; set; }
}
public class FileLoggerConfiguration : IFileLoggerConfiguration
{
string FileName { get; set; }
string DirectoryName { get; set; }
string FileExtension { get; set; }
}
这些都存在于我创建的记录器库(这是一个 class 库)和 ASP.net 核心项目中,我尝试如下调用。
services.AddSingleton<ILoggerConfiguration, LoggerConfiguration>(_ =>
Configuration
.GetSection(nameof(LoggerConfiguration))
.Get<LoggerConfiguration>());
我试图通过依赖注入来实例化它,然后我收到如下错误消息。
System.InvalidOperationException: 'Cannot create instance of type
'Logger.IFileLoggerConfiguration' because it is either abstract or an
interface.'
我知道我在这里尝试实例化接口是错误的。我找不到摆脱这个的方法。有人建议如何在从 appsettings.json 获取时将 IFileLoggerConfiguration 注入到 ILoggerConfiguration 中吗?
appsettings.json 的值如下
"LoggerConfiguration": {
"LoggingPattern": "Message|Date|LogLevel",
"FileLogger": {
"FileName": "Test it",
"DirectoryName": "D:\Logger",
"FileExtension": ".log"
}
}
这是不可能的,你确实需要改变class结构(只使用classes,没有接口)或者自己用嵌套对象构造对象。
可在此处找到类似的问题和答案:
我正在设计一个基本的记录器,只是为了教育目的我已经按照下面的方式设计了配置界面
public interface ILoggerConfiguration
{
string LoggingPattern { get; set; }
IFileLoggerConfiguration FileLogger { get; set; }
}
public interface IFileLoggerConfiguration
{
string FileName { get; set; }
string DirectoryName { get; set; }
string FileExtension { get; set; }
}
public class LoggerConfiguration : ILoggerConfiguration
{
string LoggingPattern { get; set; }
IFileLoggerConfiguration FileLogger { get; set; }
}
public class FileLoggerConfiguration : IFileLoggerConfiguration
{
string FileName { get; set; }
string DirectoryName { get; set; }
string FileExtension { get; set; }
}
这些都存在于我创建的记录器库(这是一个 class 库)和 ASP.net 核心项目中,我尝试如下调用。
services.AddSingleton<ILoggerConfiguration, LoggerConfiguration>(_ =>
Configuration
.GetSection(nameof(LoggerConfiguration))
.Get<LoggerConfiguration>());
我试图通过依赖注入来实例化它,然后我收到如下错误消息。
System.InvalidOperationException: 'Cannot create instance of type 'Logger.IFileLoggerConfiguration' because it is either abstract or an interface.'
我知道我在这里尝试实例化接口是错误的。我找不到摆脱这个的方法。有人建议如何在从 appsettings.json 获取时将 IFileLoggerConfiguration 注入到 ILoggerConfiguration 中吗?
appsettings.json 的值如下
"LoggerConfiguration": {
"LoggingPattern": "Message|Date|LogLevel",
"FileLogger": {
"FileName": "Test it",
"DirectoryName": "D:\Logger",
"FileExtension": ".log"
}
}
这是不可能的,你确实需要改变class结构(只使用classes,没有接口)或者自己用嵌套对象构造对象。
可在此处找到类似的问题和答案: