2017-04-24 12 views
1

外部キー属性に含まれるプロパティの属性を抽出しようとすると、問題が発生しています。説明するために、私はいくつかのクラスI ObjectCatalogプロパティの属性を調べることでObjectCatalogIdプロパティの属性を取得する方法を見つけたい外部キーに「NameOf」を取得するにはどうすればよいですか?

[Required(ErrorMessage = "Please enter value.")] 
public long ObjectCatalogId{ get; set; } 

[ForeignKey(nameof(ObjectCatalogId))] 
public ObjectCatalog ObjectCatalog { get; set; } 

でこれらの性質を持っています。これは、外部キー(ObjectCatalogId)の名前を抽出し、ObjectCatalogIdクラスとObjectCatalogクラスのプロパティがリフレクションを使用して属性を取得することを見つけることを意味します。

私の質問はどのように私は外部キーの名前を取得するのですか?

attribute.GetType().Name 

動作しません。さらに、これを達成するより効率的な方法がありますか?

答えて

2

問題は、自分のプロパティから属性を取得したときに、ForeignKeyAttributeではなくAttributeとして処理したという問題でした。私は

ForeignKeyAttribute attribute = (ForeignKeyAttribute) Property.GetCustomAttribute(typeof(ForeignKeyAttribute)); 

Attribute attribute = Property.GetCustomAttribute(typeof(ForeignKeyAttribute)); 

を変更したときにだから私は、私はちょうどあなたが使用することができます

string name = attribute.Name; 
+0

を使用して欲しかった名前を得たProperty.GetCustomAttribute ()にあなたを避けるウィルいます後でキャスト;-) – CodeNotFound

+0

これはずっときれいです、ありがとう! – Matt

関連する問題