2016-04-16 8 views
2

、その性質上、名前空間と仕事からすべてのクラスを取得します。リストリスト内の各クラスのインスタンスまたはコールコンストラクタを作成し、たとえばそのメソッドまたはプロパティを呼び出します。このコードはOFC私はので、私はこのコードを使用している名前空間のすべてのクラスを取得したい

が動作していないが、これは私の目的です。

foreach (Type t in theList) 
     { 
      description += t.Description; 
     } 

@Edit 私がやった:

 var theList = Assembly.GetExecutingAssembly().GetTypes() 
       .Where(t => t.Namespace == myNameSpace) 
       .ToList(); 

     foreach (Type t in theList) 
     { 
      Command instance = (Command)Activator.CreateInstance(t); 
      result += Environment.NewLine + instance.Name + " - " + instance.Description; 
     } 
+0

私は説明を連結する方法がわからない(私はこれが最初の場所でのメンバーではないと思います) 「インスタンスと呼び出しメソッドの作成」に対応しています。明確にすることはできますか? –

+2

'Activator.CreateInstance'を見てください – Jonesopolis

+0

説明は単に文字列プロパティです。私はこれをたとえば追加しました。つまり、リストリストにあるクラスのプロパティとメソッドを使いたいと思っています。 – Porqqq

答えて

0

をあなたはActivator.CreateInstance()を呼び出すことができるクラスのインスタンスを作成します。

もThereis私は、オブジェクトのプロパティと値を取得するために使用して素敵な拡張メソッド:

/// <summary> 
///  Gets all public properties of an object and and puts them into dictionary. 
/// </summary> 
public static IDictionary<string, object> ToDictionary(this object instance) 
{ 
    if (instance == null) 
     throw new NullReferenceException(); 

    // if an object is dynamic it will convert to IDictionary<string, object> 
    var result = instance as IDictionary<string, object>; 
    if (result != null) 
     return result; 

    return instance.GetType() 
     .GetProperties() 
     .ToDictionary(x => x.Name, x => x.GetValue(instance)); 
} 
関連する問題