2017-04-24 73 views
1

當我嘗試提取包含在外鍵屬性中的屬性的屬性時,我遇到了困難。爲了說明這一點,我在一些類如何獲得外鍵上的「NameOf」?

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

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

我想找到一種方法,通過觀察上ObjectCatalog財產屬性得到ObjectCatalogId財產屬性具有這些屬性。我期望這將意味着提取外鍵的名稱(即ObjectCatalogId),然後在類ObjectCatalogId和ObjectCatalog中找到該屬性,並使用反射來獲取屬性。

我的問題是如何獲得外鍵的名稱?

attribute.GetType().Name 

不起作用。另外,還有更有效的方法來完成這個嗎?

回答

2

問題是,當我從屬性中得到一個屬性時,我將它當作屬性而不是ForeignKeyAttribute處理。所以,當我改變

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

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

我得到了我想要的只是使用

string name = attribute.Name; 
+0

您可以使用名稱Property.GetCustomAttribute ()的西港島線避免你投之後;-) – CodeNotFound

+0

這是非常整潔,謝謝! – Matt