1

非常に単純なことをしたいのですが、それはプロパティの属性を取得することです。これで、PropertyInfo などを介してこれを行う方法がわかりましたが、属性を取得したいプロパティを知っているので、次のようなことを行うことは可能ですか:

MyAttribute attr = (MyAttribute)customer.Forename;

理想的には反射を避けたい。私が考えることができる唯一の方法は、次のような linq ステートメントを実行することです。

PropertyInfo pi = typeof(Customer).GetProperties().Where(x => x.Name == "Forename").FirstOrDefault();
MyAttribute attri = (MyAttribute)Attribute.GetCustomAttribute(pi, typeof(MyAttribute));

プロパティ名で文字列比較をしなければならないので、これは好きではありません:(

属性を取得したいプロパティを知っていることを考えると、もっと簡単な方法があると思いましたか?

4

1 に答える 1

0

Kzu は、強く型付けされたリフレクションを可能にするコードを書きました。

こちらのブログ投稿を参照してください: http://blogs.clariusconsulting.net/kzu/linq-beyond-queries-strong-typed-reflection/

NuGet パッケージ (NETFx Reflector) として入手できるようになりました。

http://nuget.org/packages/netfx-Reflector

// Void static method
MethodInfo cw = Reflect.GetMethod(() => Console.WriteLine);

// Instance void method
MethodInfo mi = Reflect<IView>.GetMethod(v => v.Show);

// Boolean returning instance method
MethodInfo pi = Reflect<IViewModel>.GetMethod<bool>(v => v.Save);
于 2013-07-19T10:51:26.723 に答える