2014-09-26 51 views
0

我想爲ASP.Net MVC 6應用程序創建一個日誌記錄系統,它將日誌消息鏈接到某些對象。在Asp.net視圖中獲取動態類型對象

例如:

  • 用戶{0}購買{1}
  • 項{0}提供商{1},購買放置在由(2)

的進貨哪個會地圖:

  • 用戶John蘋果購買箱
  • 項目時鐘與供應商卡西歐的進貨,購買後由約翰尼

我至今是一個「登錄」的方式接收一個IEnumerable和一個IEnumerable IDS

例如:

  • EnumObjectType.User:2
  • EnumObjectType.Product:1
  • ...

我已經擁有所有代碼來保存數據庫中的這些數組,讀取它們,將它們轉換爲枚舉等。但是,我不知道如何製作應用程序的「視圖」部分。

也就是說,轉換Log.Message(實例),例如: User {0} purchased {1}User <a href="#">John Apple</a> purchased <a href="#">Box</a>

我需要做什麼?

從「Log Model View」中,如何知道ANY模型(查詢給定對象,並使用它的屬性)知道它的類型(EnumObjectType)和它的ID?

其他細節

所有「模型」可以記錄將實現包含兩個方法的接口,它返回的鏈接指向這個類的一個給定的實例(ToLinkStructure如/用戶/細節/ { 0})和ToLoggableString,它返回一個能夠快速表示實例的字符串(例如「User:」+ this.username)

Thanks! 我試圖給出所有可能跨越我的想法的細節,但是如果缺少某些東西,我會很樂意添加它

回答

0

如果我理解正確,您想要讀取某個對象的屬性,直到運行時才知道。這是可以做到這樣的:

var value = myObject.GetType().GetProperty("name").GetValue(myObject, null); 

一個更好的選擇是,因爲你說你的類實現一個接口,是把該屬性的界面,並且只接受實現這個接口的情況下,在你的記錄功能。

public interface MyInterface{ 
    string Name { get; } 
}