2010-07-07 50 views
1

在我們的Smartclient應用程序中,我們目前使用PostSharp將獲取/設置代碼注入到自動屬性中,以實現髒狀態跟蹤和INotifyPropertyChanged事件。.Net 4使用LinqToSql的動態對象?

我們經常在LinqToSql中使用這些業務對象。我們想要移除對Postsharp的依賴關係,並且.Net 4.0 ExpandoObject看起來很完美。我們可以添加動態屬性並添加自定義的get/set代碼,而無需在HasChanged()實現的每個屬性上重複它。

我的問題是這樣的;我們如何從LinqToSql獲取動態ExpandoObject的實例?這是否可能?

如果不是,還有其他方法可以實現嗎?我們基本上在每個50-100性質的業務對象,並且需要執行INotifyPropertyChanged沒有幾百重複行代碼

+1

設計時每個屬性都已知嗎?代碼生成器不會比動態類型更好嗎? ExpandoObject是封閉的,所以規則繼承。 – 2010-07-07 20:23:57

+0

我認爲你是對的 – Andronicus 2010-07-12 14:43:13

回答

0

它看起來像現在有三種方式去了解這個

  1. 代理對象例如城堡動態代理
  2. 代碼生成例如T4模板
  3. 代碼編織例如PostPHP

對我們來說這是一個不錯的方法,因爲我們使用defaukt構造函數來獲得所需的行爲,並且不必擔心生成的代碼的維護。我們只是將一個屬性添加到POCO實體並忘記它。