如何仅将对象参数的某些属性传递给Fody / MethodTimer拦截器

爪哇诺鲁兹

我想通过Fody / MethodTimer记录我的方法的执行时间

我不能只传递方法参数的某些属性(属于类类型)。

我的方法:

[Time("'{obj.EventId}'")]
private static void testFody(TestClass obj)
{
     for (int i = 0; i < 100; i++)
     {
          Console.WriteLine($"This is : {i }");
     }
}

public class TestClass
{
    public Guid EventId { get; set; }

    public string prop1 { get; set; }

    public int prop2 { get; set; }
}

当我运行此代码时,出现以下错误:

无法处理'System.Void TestCurrentEPCIS.Program :: testFody(TestCurrentEPCIS.TestClass)',因为该格式使用的'obj.EventId'不能作为方法参数使用。

当我按如下方式传递对象本身时,它将obj.ToString()传递给Interceptor类:

[Time("'{obj}'")]
private static void testFody(TestClass obj)

如何将obj参数的某些属性传递给Interceptor?

粉红色的

根据文档,当前不支持此功能:

注意1:尚不支持子属性。

编织器通过属性仅支持两种类型的参数:

允许以下值:

  • 任何参数名称(例如{fileName})
  • {this}(在实例本身上调用ToString())请注意,这在静态方法上不可用,如果在静态方法中使用,则编织器将引发错误

(强调我的)

看来,您唯一可以做的就是将属性包含在重写的ToString方法中。

编织者是开源的。如果您有时间可以专用于此,则可以考虑分叉项目并进行必要的更新。一个好开始的地方似乎是ParameterFormattingProcessor类,它使用基本的Regex标识参数名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将参数传递给bytebuddy拦截器

来自分类Dev

将参数传递给Spring Soap拦截器

来自分类Dev

AngularJs:排除拦截器的某些请求

来自分类Dev

将对象从服务器拦截器传递给函数

来自分类Dev

如何映射弹簧拦截器

来自分类Dev

如何使拦截器相互关联?

来自分类Dev

CDI拦截器:从拦截的方法获取参数

来自分类Dev

CDI拦截器:从拦截的方法获取参数

来自分类Dev

如何将数据从EJB拦截器传递到异步EJB中的拦截器

来自分类Dev

如何解决在Weblogic和Apache拦截器中部署Apache CXF的拦截器

来自分类Dev

如何在angular的拦截器上传递查询?

来自分类Dev

如何在AngularJS中访问拦截器的'config'对象

来自分类Dev

为某些动作添加自定义拦截器

来自分类Dev

Angular中的拦截器,仅用于某些通话吗?

来自分类Dev

从Spring MVC拦截器访问Controller的方法参数值

来自分类Dev

向Spring MVC拦截器添加参数

来自分类Dev

Ajax jquery和struts2拦截器的参数

来自分类Dev

在拦截器中访问Struts动作结果的参数

来自分类Dev

Java:从InvocationContext获取拦截器的注释参数

来自分类Dev

拦截器无法访问操作参数

来自分类Dev

CXF在拦截器中获取对服务对象的引用

来自分类Dev

Magento 2 插件/拦截器访问和修改 $this 对象

来自分类Dev

使用承诺从 HTTP 拦截器返回请求对象

来自分类Dev

如何将对象属性作为参数传递给Struts自定义验证器

来自分类Dev

矩形-如何覆盖错误拦截器

来自分类Dev

如何在Angular2中创建拦截器?

来自分类Dev

如何在Spring拦截器中读取httpservletresponse?

来自分类Dev

Spring注解@Retryable-如何设置拦截器

来自分类Dev

在实体框架中使用拦截器时如何禁用

Related 相关文章

热门标签

归档