C# 如何使用设计模式优雅地记录业务对象的操作?

C# 如何使用设计模式优雅地记录业务对象的操作?,c#,.net,design-patterns,C#,.net,Design Patterns,例如,我有两个类调用Log和Order,Order是一个业务对象。如果我需要记录业务对象订单的插入操作,那么我必须这样做: public class Order { IOrderDal dal = DALFactory.DataAccess.CreateOrder(); logger = new Logger(); public void Inerst(OrderInfo order) { dal.Insert(order); logger.log(orderIn

例如,我有两个类调用Log和Order,Order是一个业务对象。如果我需要记录业务对象订单的插入操作,那么我必须这样做:

public class Order
{
  IOrderDal dal = DALFactory.DataAccess.CreateOrder();
  logger = new Logger();
  public void Inerst(OrderInfo order)
  {
    dal.Insert(order);
    logger.log(orderInfo.ToString(),"Insert",DateTime.Now.ToString());
  }
public class Logger
{
  public void log(string description,string operation,string time)
  {
    ....//dosometing to persist the information
  }
}
我的问题是,如果需要记录数百个业务对象,那么我必须在每个日志中添加类似logger.logorderInfo.ToString、Insert、DateTime.Now.ToString的代码
业务对象的操作?我认为必须有一些设计方法来简化工作。

日志记录是AOP应用程序的典型示例,使用AOP您将能够实现您想要的。AOP框架允许您在方法执行的各个阶段声明应用于其他方法的方法。这允许您在方法执行之前调用一些代码,在方法完成执行之后,如果方法抛出异常等

通常,您可以访问有关方法、名称、参数等的元数据,这样您就可以轻松地记录正在执行的方法以及调用该方法时使用的参数

在.net中,AOP最大、最流行的框架可能是,他们有一个例子