目前我正在实现一个导入模块。但这也是必须记录每个操作的要求。例如。当我导入客户时,我需要检查该客户是否已经存在,如果客户不存在,我需要创建客户。我需要记录这两种情况。
所以现在我有一些这样的代码:
public event Action<string> OnMessageLog;
public void ImportOrder()
{
LogMessage("The order is being created");
var customer = ImportCustomer("MG_001");
var order = new Order{ Customer = customer };
LogMessage("The order is created");
unitOfWork.Orders.AddObject(order);
}
public Customer ImportCustomer(string customerCode)
{
var customer = this.unitOfWork.Customers.GetByCode(customerCode);
if(customer == null)
{
LogMessage("The customer doesn't exists. A new customer is created");
customer = new Customer{ \\.. here some initialization };
}
else
{
LogMessage("The customer exists.");
}
return customer;
}
private void LogMessage(string message)
{
if(OnMessageLog != null)
{
OnMessageLog(message);
}
}
我不太喜欢这样,因为我认为所有“LogMessage(...)”调用都不是很整洁。
作为替代方案,我正在考虑使用装饰器模式,但这变得难以实现,因为导入非常复杂。这意味着我需要为每个 Action 创建 2 个方法(而且我有很多 Action )。
您有什么建议或想法可以使这段代码更易读/更整洁吗?
最佳答案
您可以使用类似 PostSharp 的工具尝试面向方面的编程.
关于c# - 有什么巧妙的方法可以在不让登录困惑代码的情况下应用日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27172643/