2010-07-07 80 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实体并忘记它。