2017-02-24 9 views
0

私は、Entity Frameworkテーブルの値を取得するオブジェクト型のプロパティを持つクラスを持っています。ここでC#typeof( "Object Variable get type")

は、クラスのプロパティです:

public string EntityName 
{ 
    get { return _entityName; } 
    set { _entityName = value; } 
} 
private string _entityName; 

public object EntityType 
{ 
    get { return _entityType; } 
    set { _entityType = value; } 
} 
private object _entityType; 

オブジェクトは任意のテーブルすることができ、それが初期化されたときに依存します。 次へオブジェクトのテーブルのすべての列名が必要です。ここ は私にそれを与える必要があるコードです:

public ObservableCollection<string> ReadColumnNames() 
    { 
     IEnumerable<string> names = typeof("Problem Here").GetProperties() 
        .Select(property => property.Name) 
        .ToList(); 

     ObservableCollection<string> observableNames = new ObservableCollection<string>(); 

     foreach (string name in names) 
     { 
      observableNames.Add(name); 
     } 

     return observableNames; 
    } 

問題は、typeof演算()メソッドは、タイプを必要とタイプが任意のテーブルのものとすることができるということです。タイプの変数、つまり タイプmyType = EntityDetail.GetType() をタイプした場合、typeof()はタイプではなく変数であるため、それを拒否します。

私は何ができるのですか?

共有する気分があれば、これを行うより良い方法があるかどうかわかりません。

ありがとうございます。

+1

私はあなたのエンティティの*ランタイム*型を返す 'typeof(...)'の代わりに 'myEntity.GetType'が必要だと思います。 – HimBromBeere

+2

これで、すでに見つかった 'EntityDetail.GetType()'は使えないのですか?あなたの問題のステートメントは私には不明です。 –

+0

なぜEntityDetail.GetType()、GetProperties()などを使用できなかったのですか? –

答えて

3

これは多分ですか?

IEnumerable<string> names = typeof(EntityDetail).GetProperties() 
    .Select(property => property.Name) 
    .ToList(); 

これにはusing System.Linqが必要です。

typeofコンパイル時のタイプを期待します。コンパイル時にアクチュエータのタイプがわからない場合は、typeof(...)の代わりにmyInstance.GetType()を使用してください。

+0

私は試しましたが、.Selectはプロパティとして認識されません。 EntityDetailではなく、クラス名なので、プロパティ変数EntityTypeにあります。 – Elmer

+0

using System.Linq;私は行方不明だった。 – Elmer

関連する問題