我使用Visual Studio中的添加服务引用功能将服务的代理添加到我的项目中。我还有一个共享程序集(Client,Server),我将其标记为在程序集中重用类型。重用的对象没有像
这样的常见设置器 set {
if ((this.PropertyNameField.Equals(value) != true)) {
this.PropertyNameField = value;
-----> this.RaisePropertyChanged("PropertyName");
}
}
相反,只有像setter这样的自动属性没有PropertyChanged事件:
set {
this.PropertyNameField = value;
}
我缺少任何配置选项吗?
编辑: 重用类型继承自实现 INotifyPropertyChanged 的baseobject,并且也在共享程序集中。
答案 0 :(得分:0)
我自己也遇到了这个棘手的问题。我还没有找到根本问题的修复程序,它阻止了从引用程序集中的类型派生的类中的 INotifyPropertyChanged 实现,但我找到了一种解决方法。在更新服务引用时,它仍然需要对reference.cs进行一些修改,但它比手动将 RaisePropertyChanged 逻辑添加到所有属性设置器要简单得多。
我正在使用Visual Studio 2015,在选择的程序集中重用类型。
打开Reference.svcmap文件并更改
<ExcludedTypes />
到
<ExcludedTypes>
<ExcludedType TypeName="ReusedBaseClass" />
</ExcludedTypes>
其中 ReusedBaseClass 是在共享程序集中实现INotifyPropertyChanged的类。这允许重用所有其他类型,但禁止重用导致该问题的 ReusedBaseClass 。