我有这样的方面:
public class MyAttribute : OnMethodInvocationAspect
{
public int Offset { get; internal set; }
public MyAttribute(int offset)
{
this.Offset = offset;
}
public override void OnInvocation(MethodInvocationEventArgs eventArgs)
{
//do some stuff
}
}
现在我正在上课,我将其属性添加到其中:
class MyClass
{
[MyAttribute(0x10)]
public int MyProp { get; set; }
}
一切正常。然而现在我想用反射来获得我的偏移;当我做的时候
typeof(MyClass).GetProperty("MyProp").GetCustomAttributes(true);
它什么都不返回。如何访问原始的偏移值(属性上的属性)?
答案 0 :(得分:16)
啊,我这样解决了:
首先在属性定义中添加一个属性,如:
[MulticastAttributeUsage(MulticastTargets.Method, PersistMetaData=true)]
public class MyAttribute : OnMethodInvocationAspect
然后我可以调用我的属性的get_方法来获取我想要的数据:
foreach (PropertyInfo pi in typeof(T).GetProperties())
{
var entityAttribute = (MyAttribute)(typeof(T).GetMethod("get_" + pi.Name).GetCustomAttributes(typeof(MyAttribute), true).FirstOrDefault());
}