using KH.WMS.Core.Attributes;
namespace KH.WMS.TestProj;
///
/// 调用链追踪演示服务(接口模式 - 支持完整的方法链追踪)
///
[LogInterceptor(LogParameters = true, LogReturnValue = true)]
public class CallTraceDemoService : ICallTraceDemoService
{
private readonly ICallTraceDemoService _self;
///
/// 构造函数 - 注入自己(代理对象)
///
public CallTraceDemoService(ICallTraceDemoService self)
{
_self = self; // 这里的 self 是代理对象,不是 this
}
public string ProcessOrder()
{
// 通过代理调用,内部方法也会被拦截 ✅
_self.ValidateOrder();
_self.CalculatePrice();
_self.SaveOrder();
return "Order processed successfully";
}
public void ValidateOrder()
{
// 通过代理调用,子方法也会被拦截 ✅
_self.CheckInventory();
_self.CheckCustomer();
}
public bool CheckInventory()
{
return true;
}
public bool CheckCustomer()
{
return true;
}
public decimal CalculatePrice()
{
_self.ApplyDiscount();
return 100.50m;
}
public void ApplyDiscount()
{
// 折扣逻辑
}
public void SaveOrder()
{
_self.NotifyCustomer();
}
public void NotifyCustomer()
{
// 发送通知
}
}