2016-10-19 4 views
0

私のDTOクラスでは、単純なゲッター/セッター(get; set;)のプロパティをいくつか持っていますが、プロパティの中には他のゲッター/プロパティ/変数など)上記の例ではDTOクラスの単純なゲッター/セッターでプロパティを見つける

[Serializable] 
public class MyClassDto 
{ 
    public virtual string Name { get; set; } 
    public virtual string Description { get { return Name; } set { Name = value; } } 
    .... 
} 

、私はプロパティNameを取得したいが、私はゲッター/セッターとしてget;set;を持つプロパティを検索しPropertyInfoを使用しようとしていますDescription

を取得する必要はありません。しかしそれはできませんでした。

このような開発の理由は次のとおりです。単純なget;set;のプロパティには、Entityクラスの同じ名前のプロパティと、データベーステーブルの列があります。 My Entitiesには、データベーステーブルに関連する列がないプロパティもあります。だから、簡単なgetters/setterでプロパティを取得すると、関連するデータベースカラムを持つプロパティが得られます。

一方、私はNHibernateを使用しています。

+0

他の属性を使用して、使用したいフィールドにフラグを設定します。これは、より柔軟で実装が非常に簡単です。 – Gusman

+0

'CompilerGeneratedAttribute'のgetterメソッドとsetterメソッドの属性を調べることができますが、それが他の場合にも追加されるかどうかはわかりません。 – Dirk

答えて

1

これが要件を満たしているかどうかを確認してください。

var property = typeof(MyClassDto).GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(t => t.CanRead && t.CanWrite); 
      foreach (var item in property) 
      { 
       string propertyName = item.Name; 
       bool CompilerGenerated = item.GetGetMethod() 
         .GetCustomAttributes(typeof(CompilerGeneratedAttribute), true).Any(); 
       //Description is not CompilerGeneratedAttribute so return false; 
      } 
+0

'Name'の代わりに' Name'と 'Description'プロパティの両方を返すので、これは機能しません。 – Dirk

関連する問題