2016-08-03 11 views
-1

類的屬性使用.NET 4.6:選項來獲得一個名字值字典

我找得到選項的屬性的名稱值集合字典在給定的類。一個明顯的選擇是反思。但是,早在.NET 2.0的時候,反思的使用就被認爲是性能上的重頭戲,並且不推薦使用。

我們在.NET 4.6中有哪些更好的選擇?

實體框架中是否有任何功能可以更容易地實現此需求?

更新1

我建立一個郵件合併風格模板系統,我與屬性的值更換標籤,如{}屬性名。

一些數據來自EF實體類,一些來自POCO分類。

+0

這更接近查詢在標準ADO.net中的工作方式。你需要使用像Entity Framework這樣的ORM嗎?因爲看起來你正在努力解決EF的存在問題,因爲它首先會避免它。 – recursive

+1

你試圖解決什麼問題? –

+0

如果您需要在運行時獲取屬性列表,那是什麼反射*爲*。如果你可以在編譯時生成列表,那將會更快。但真的,使用反射並不是一個很大的性能問題 - 不是你已經定義了性能限制,所以誰知道它是否快得「足夠」。 – Blorgbeard

回答

1

所以不管怎麼樣,你都會使用反射。

我建議在模板系統加載時緩存模型類型的結構。這將加速模板處理。但說實話,除非你一次處理數十萬個模板,否則你可能不會從緩存中獲得顯着的速度提升(你應該測試一下)。

我已經使用並強烈推薦的另一種選擇是RazorEngine。它是一個基於ASP.NET的剃刀模板引擎的已經構建的模板引擎。

+0

謝謝你的幫助。你指的是https://github.com/Antaris/RazorEngine嗎?您是否發現它足夠穩定,可用於具有大量數據呈現的關鍵任務Windows服務應用程序? –

+0

我無法提出任何建議。簡單地給你選擇。您必須自己決定是否適合您的項目。 –