2011-01-14 16 views
1

プロパティのプロパティのプロパティを取得または設定することは可能ですかStackFrameなし?あなたはこのような関数を書いていない文字列lliteralsで表現してプロパティ名を取得することができますプロパティのプロパティの属性を取得または設定する方法

[SomeAttribute] 
public int SomeProp 
{ 
    get 
    { 
     //Get of SomeAttribute is set on this property 
    } 
    set 
    { 
     //Get of SomeAttribute is set on this property 
    } 
} 
+0

あなたが常にできますGetProperty( "SomeProp")。Attributes ["AttrName"] ' - しかし、あなたはプロパティ名をハードコードしたくないと思います! – VinayC

+0

Yea @VinayCハードコードではない方が良いでしょう –

+1

'SomeAttribute'はプロパティにのみ適用され、getterやsetter(メソッド)には適用されません。あなたの意図を明確にしてください。 – leppie

答えて

1

例えば

public string Item(this T obj, Expression<Func<T, object>> expression) 
{ 
    if (expression.Body is MemberExpression) 
    { 
     return ((MemberExpression)expression.Body).Member.Name; 
    } 
    if (expression.Body is UnaryExpression) 
    { 
     return ((MemberExpression)((UnaryExpression)expression.Body).Operand).Member.Name; 
    } 
    throw new InvalidOperationException(); 
} 

使用法:

public int SomeProp 
{ 
    get 
    { 
    var attribs = 
      this.GetType().GetProperty(this.Item(o => o.SomeProp)).Attributes; 
    } 
} 
関連する問題