2017-09-28 12 views
0

リフレクションを使用して、いくつかのパラメータ(またはそう呼ばれる場合は属性)を取得するにはどうすればよいですか?リフレクション - プロパティの属性を取得するには?

MyObject x = new MyObject(...); 
.......... 
var propInfo = x.GetType().GetProperty("something"); 
if (propInfo != null) { 
    xyz= propInfo.GetValue(x,null).Metrics.Width //<------ gives error 
} 
+2

'GetValue'は' object'を返します。他のメンバーを呼び出す前にキャストする必要があります。さもなければ、あなたは 'dynamic'オブジェクトを使うことになります – Nkosi

答えて

0

GetValue戻りobject

他のメンバーを呼び出す前にキャストする必要があります。

MyObject x = new MyObject(...); 
//.......... 
var propInfo = x.GetType().GetProperty("something"); 
if (propInfo != null) { 
    MyPropertyType xyz = (MyPropertyType)propInfo.GetValue(x,null); 
    if(xyz != null) { 
     double width = xyz.Metrics.Width; 
    } 
} 

それ以外の場合は、dynamicオブジェクトを使用したままになります。

MyObject x = new MyObject(...); 
//.......... 
var propInfo = x.GetType().GetProperty("something"); 
if (propInfo != null) { 
    dynamic xyz = propInfo.GetValue(x,null); 
    if(xyz != null) { 
     double width = xyz.Metrics.Width; 
    } 
} 
関連する問題