我试图利用自定义属性的AOP,我想实现一个自定义属性,它根据输入参数影响返回方法值。有一种方法可以为返回值定义属性:
[return: CustomAttribute]
public string Do(string param1)
{
// do something
}
但是我无法找到在应用此属性时添加所需行为的方法。我想根据输入参数的值执行一些代码,在某些情况下甚至可以更改输出值。
答案 0 :(得分:2)
C#不提供任何与AOP相关的语法。 [return: CustomAttribute]
将元数据信息添加到返回类型。这根本不是你所期望的。为了利用AOP,您需要:
答案 1 :(得分:0)
这是一种做丑陋的方法,可以得到你的结果,但它很好......丑陋。
public class UglySolution
{
private static string _changedString;
private class CustomAttribute : Attribute
{
public CustomAttribute()
{
_changedString = "New";
}
}
public class SomeClass
{
public SomeClass()
{
_changedString = "Original";
}
[Custom]
public string GetValue()
{
typeof(SomeClass).GetMethod("GetValue").GetCustomAttributes(true).OfType<CustomAttribute>().First();
return _changedString;
}
}
}