gpt4 book ai didi

c# - 是否可以在其实现的项目之外使用实现 Fody 编织器的属性?

转载 作者:行者123 更新时间:2023-12-04 17:33:30 26 4
gpt4 key购买 nike

在已实现该属性的项目之外的方法上使用实现 Fody 编织器的属性时,我无法拦截方法连接点。

我在一个项目中实现了 MethodDecorator.Fody 编织器,但是当我尝试将属性添加到项目外的任何方法时,编织不会发生。虽然它在同一个项目中工作。

[AttributeUsage(AttributeTargets.Method)]
public class RelayExceptionsAttribute : Attribute, IMethodDecorator
{
public void Init(object instance, MethodBase method, object[] args)
{ }
public void OnException(Exception exception)
{
Console.WriteLine(exception.Message);
}
public void OnEntry() { }

public void OnExit() { }
}

当我在同一个项目中的方法上使用此属性时,OnException(以及属性中的其他方法)按预期命中。当我将它放在项目外部的方法上时(但将项目的属性定义为引用),不会发生拦截。

最佳答案

将模块应用于 MethodDecorator.Fody 实现

[module: RelayExceptions]
[AttributeUsage(AttributeTargets.Method)]
public class RelayExceptionsAttribute : Attribute, IMethodDecorator
{
public void Init(object instance, MethodBase method, object[] args)
{ }
public void OnException(Exception exception)
{
Console.WriteLine(exception.Message);
}
public void OnEntry() { }

public void OnExit() { }
}

在另一个有引用提及的项目中 [module: RelayExceptions]

[module: RelayExceptions]

class Test{
[RelayExceptions]
public void AnyMethod()
{
//some code
}
}

关于c# - 是否可以在其实现的项目之外使用实现 Fody 编织器的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57653178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com