2017-07-21 24 views
0

私はインターフェイスを実装するクラスの内部でプロパティを取得しようとしています。私のデザインは以下の通りです、今私はobjectPropertiesの中で得たもの、C#:インターフェイスから実装されたクラスのプロパティを取得

main() 
{ 
    ABC abcObj = new BCD(); 
    var typeOfObject = typeof(abcObj); 
    var objectProperties = typeOfObject.GetProperties(BindingFlags.Public|BindingFlags.Instance); 
} 

を私はこれを試してみましたリフレクションを使用して

interface ABC 
{ 
    string Name { get; set; } 
} 

public class BCD:ABC 
{ 
public string Name { get; set; } 
public string Age{ get; set; } 
public string Height{ get; set; } 
public string Weight{ get; set; } 
} 

はABCクラスのプロパティでした。しかし、私はBCDクラスからもプロパティが必要です。

誰かがこれに助けてもらえますか?

+0

BCDクラスとしてキャストしようとしましたか? –

答えて

2

代わりのtypeofを使用して(つまり、クラス/インタフェース名に適用される)のインスタンスの型を取得するために

var typeOfObject = abcObj.GetType(); 

を試してみてください。

私は

ABC abcObj = new BCD(); 
var objectProperties = abcObj.GetType() 
      .GetProperties(BindingFlags.Public | BindingFlags.Instance); 

for (int i = 0; i < objectProperties.Length; i++) 
{ 
    Console.WriteLine("{0} ({1})", objectProperties[i].Name, objectProperties[i].PropertyType); 
} 

を実行すると、私は、コンソールに次のように取得する:

名(可能System.String)

年齢(可能System.String)

高さ( System.String)

Weig ht(System.String)

関連する問題