WCF重用类型未引发PropertyChanged
本文关键字:PropertyChanged 类型 WCF | 更新日期: 2023-09-27 17:57:42
我使用Visual Studio中的add service Reference函数将服务的代理添加到我的项目中。我还有一个共享程序集(客户端、服务器),我将其标记为程序集中的重用类型。重复使用的对象没有像那样的通用设置器
set {
if ((this.PropertyNameField.Equals(value) != true)) {
this.PropertyNameField = value;
-----> this.RaisePropertyChanged("PropertyName");
}
}
相反,只有一个类似setter的自动属性没有PropertyChanged事件:
set {
this.PropertyNameField = value;
}
有没有我缺少的配置选项?
编辑:重用的类型继承自实现INotifyPropertyChanged的基对象,该基对象也在共享程序集中。
我自己也遇到过这个棘手的问题。我还没有找到阻止从引用程序集中的类型派生的类中实现INotifyPropertyChanged的根问题的修复程序,但我找到了一个解决方法。在任何时候更新服务引用时,它仍然需要对reference.cs进行一些修改,但这比手动向所有属性设置器添加RaisePropertyChanged逻辑要简单得多。
我使用的Visual Studio 2015带有所选程序集中的重用类型。
- 最初添加服务参考后,在项目上启用"显示所有文件"选项
- 在解决方案资源管理器中展开服务引用条目以公开基础文件
-
打开Reference.svcmap文件并更改
<ExcludedTypes />
至
<ExcludedTypes> <ExcludedType TypeName="ReusedBaseClass" /> </ExcludedTypes>
其中ReusedBaseClass是在共享程序集中实现INotifyPropertyChanged的类。这允许重用所有其他类型,但禁止重用导致问题的ReusedBaseClass。
- 在服务参考上选择更新服务参考选项
- reference.cs现在将具有具有RaisePropertyChanged逻辑的属性setter
- 现在执行搜索和替换操作,将reference.cs中ReusedBasedClass的本地实现替换为共享程序集中的完全限定的ReusedBasedClass