最近我一直在探索使用C#4.0(DynamicObject,ExpandoObject等)中引入的花哨的新動態關鍵字。動態運行時對象創建:保持智能感知?
現在我可以確定新引入的幾種用法(和幾個陷阱),但爲了我的項目和這個問題 - 我正在清理我的後期綁定的基於字符串的索引集合,以使它們更安全。
因此,動力之前,我有:
Car car1 = CARWarehouse1["Honda"];
,並與動態我現在可以做(其中CARWarehouse1現在擴展的DynamicObjects基地)
Car car1 = CARWarehouse1.Honda
這是一切都很好,並從快速瀏覽它看起來像我已經達到了我想要的......但是我有嗎? 因爲讓我們面對它,對於編譯時的任何一種方法,如果我輸錯了我引用的汽車類型,編譯器不會有問題,但我會在運行時遇到問題。
因此,我真正需要的是編譯時屬性檢查和Intellisense支持。所以 - 我能做到嗎?
我知道有像Moq這樣的庫有這種能力,並且Resharper在intellisense中提供了某種支持,但我正在尋找一個更全面的解決方案。
歡迎任何想法,大,小,簡單或複雜。
您的CARWarehouse1(奇數大寫的btw)*在編譯時知道它有一個'Honda'而不是'Honder'?如果不是,編譯器如何抱怨?如果是這樣,爲什麼你不使用靜態類型? – 2012-02-16 11:35:24
是的,這個項目並沒有真正使用CARWarehouse1,它只是一個例子,Cars會在運行時通過數據庫或者XML或者其他方式被添加到CarWarehouse中,我不希望汽車被強制輸入。我明白你的意思,但我希望intellisense能夠實際運行該方法並返回動態屬性。我很高興看到代碼生成路線,就像linq實體一樣。我只想知道什麼是可能的 – 2012-02-16 11:43:16
它會查找哪個數據庫?你的製作嗎?測試?還有別的嗎?你在編譯時真的需要數據庫調用嗎?那麼如果你不在一個有數據庫的網絡上......想想所有可能出錯的地方...... – 2012-02-16 11:47:42