11

私はこのようないくつかの側面を持っています:

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);

何も返しません。元のオフセット値(属性のプロパティ)にアクセスするにはどうすればよいですか?

4

1 に答える 1

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());
        }
于 2009-10-08T18:28:25.273 に答える