C# 如何在另一个项目中使用MethodDecorator.Fody Decorator
我使用了Fody Nuget包,如下所示C# 如何在另一个项目中使用MethodDecorator.Fody Decorator,c#,nuget-package,fody,C#,Nuget Package,Fody,我使用了Fody Nuget包,如下所示 安装软件包 PM> Install-Package MethodDecorator.Fody 装饰方法 public class BusinessLayerClass { [LogMethod] public string BusinessLayerMethod() { DataLayerClass dataLayerClass = new DataLayerClass(); return
PM> Install-Package MethodDecorator.Fody
public class BusinessLayerClass
{
[LogMethod]
public string BusinessLayerMethod()
{
DataLayerClass dataLayerClass = new DataLayerClass();
return dataLayerClass.DataLayerMethod();
}
}
using System;
using System.Reflection;
[module: LogMethod] // Attribute should be "registered" by adding as module or assembly custom attribute
// Any attribute which provides OnEntry/OnExit/OnException with proper args
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Assembly | AttributeTargets.Module)]
public class LogMethodAttribute : Attribute, IMethodDecorator
{
private MethodBase _method;
// instance, method and args can be captured here and stored in attribute instance fields
// for future usage in OnEntry/OnExit/OnException
public void Init(object instance, MethodBase method, object[] args)
{
_method = method;
}
public void OnEntry()
{
NLogging.Trace("Entering into {0}", _method.Name);
}
public void OnExit()
{
NLogging.Trace("Exiting into {0}", _method.Name);
}
public void OnException(Exception exception)
{
NLogging.Trace(exception, "Exception {0}", _method.Name);
}
}
这在同一个项目中可以正常工作,但是当我在另一个项目的另一个方法中使用decorator[LogMethod]时,这个
onetry()
,OnExit()
,oneexception(Exception Exception)
方法不会触发
例如:
[LogMethod]
public void Another_Method_In_Seperate_Project()
我添加了对定义了[LogMethod]的项目的引用
任何人都可以给我一个在其他项目中使用相同实现的方法,而不在每个项目中执行LogMethodAttribute.cs(此处定义了[LogMethod])。您还需要在其他项目中安装
MethodDecorator.Fody
nuget包(以及依赖项)。您还需要在该项目中添加另一个FodyWeavers.xml