我试图找出一种传递方法属性的无缝方法。这是一个可能的实现:
[Custom(Greeting = "Hello")]
public string Test(string name)
{
var attributes = MethodInfo.GetCurrentMethod().GetCustomAttributes();
return SayGreeting(attributes, name);
}
private string SayGreeting(IEnumerable<Attribute> attributes, string name)
{
var customAttr = attributes.SingleOrDefault(a => a is CustomAttribute) as CustomAttribute;
return customAttr?.Greeting + " " + name;
}
然而,问题是:
我认为我可以通过使用callermembername修复问题1,然后使用反射获取方法。然后,我可以通过使用更多反射来修复问题2.
另一种(可能更优雅)修复它的方法是使用Castle DynamicProxy或.NET的RealProxy。在我走这条路之前,我想知道是否有人有其他建议吗?
谢谢,
乔