using KH.WMS.Core.Attributes;
|
|
namespace KH.WMS.TestProj;
|
|
/// <summary>
|
/// 调用链追踪演示服务(接口模式 - 支持完整的方法链追踪)
|
/// </summary>
|
[LogInterceptor(LogParameters = true, LogReturnValue = true)]
|
public class CallTraceDemoService : ICallTraceDemoService
|
{
|
private readonly ICallTraceDemoService _self;
|
|
/// <summary>
|
/// 构造函数 - 注入自己(代理对象)
|
/// </summary>
|
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()
|
{
|
// 发送通知
|
}
|
}
|