我正在创建一个可以共享的应用程序框架。Net Core 1.2。Net Core 2.0和。NET Framework 4.6+。因此,我选择项目的目标框架为。净标准。在我的框架项目中,我有一个用于发送文本消息或电子邮件的factory类。在应用程序启动时,每个应用程序都会使用受支持的服务将工厂配置为具有DI框架的单例实例。
public class MyFactory : IMyFactory
{
private ILogger _logger;
private IDictionary<string,IMyService> _container = new Dictionary<string,IMyService>();
// this method is called on application startup to configure supported services
public void Configure(string[] keys, ILogger logger)
{
foreach(var key in keys)
{
if(key == "text")
{
container.Add(key,new TextMessageService());
}
if(key == "email")
{
container.Add(key,new EmailService());
}
}
}
//application call this method to send message
public bool SendMessage(string key, string message)
{
// we don't want application to stop when publish fail, so we add try-catch and log the message
var flag = false;
try
{
var service= container[key];
service.Publish(message);
flag = true;
}
class(Exception ex)
{
_logger.Error(ex);
}
return flag;
}
}
问题
:发布方法可能因任何原因失败。在这种情况下,我不希望应用程序停止,相反,框架应该记录错误消息。我的问题是,框架可以在不同的用户之间共享。NET框架,我不知道
ILooger
我应该使用可以共享的。净核心和。净满。
我试图避免创建自己的
ILogger
界面目前所有应用程序都在使用
Serilog
但在未来,这种情况可能会改变。
可以
Microsoft.Extensions.Logging
在这里使用?