gpt4 book ai didi

Postsharp MethodInterceptionAspect 获取方法返回值

转载 作者:行者123 更新时间:2023-12-03 06:47:17 30 4
gpt4 key购买 nike

我有一个 MethodInterceptionAspect(PostSharp) 的实现但是当我在重写 OnInvoke 方法时,args.Method 为 null,我需要知道方法返回值类型,

有人知道吗?

[PSerializable]
public class PSHandleRequestAttribute : MethodInterceptionAspect
{
public PSHandleRequestAttribute(bool readOnly = true) : base()
{
ReadOnly = readOnly;
}

#region Properties

protected bool ReadOnly { get; set; }

#endregion Properties

#region Public Methods

public override void OnInvoke(MethodInterceptionArgs args)
{
var instance = args.Instance as IBusinessTransaction;
var method = args.Method;
if (instance.IsNull())
{
throw new Exception("Use PSHandleRequestAttribute only for IBusinessTransaction");
}

instance.OpenTransaction();

try
{
args.Proceed();
//base.OnInvoke(args);
instance.CommitTransaction();
return;
}
catch (Exception ex)
{
var errorMessage = instance.RollbackTransaction(ex);

return;
}
}

#endregion Public Methods
}

最佳答案

PostSharp 会优化生成的代码,因此当 args.Method 的值未在任何地方使用时,优化器会跳过一些操作并将 null 作为值传递。

在代码中使用该值后,该值就会出现。

我还建议您在 CompileTimeValidate 方法中进行使用验证并发出构建时错误消息。这样您就可以在构建时捕获可能的错误。请参阅http://doc.postsharp.net/aspect-validation .

关于Postsharp MethodInterceptionAspect 获取方法返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43091952/

30 4 0
文章推荐: angularjs - 使用 Angular js 将 servlet 中的数据显示到