【问题标题】:How to generate web service reference without INotifyPropertyChanged?如何在没有 INotifyPropertyChanged 的​​情况下生成 Web 服务引用?
【发布时间】:2012-08-07 20:06:33
【问题描述】:

我在 SilverLight 项目中使用 Fody 来自动生成属性依赖项。但是,如果 setter 已经包含 RaisePropertyChanged 方法调用,则它不起作用。

一种解决方法是生成不带INotifyPropertyChanged 的Web 服务参考代码,而是在部分方法中实现它。

如何在没有INotifyPropertyChanged 的情况下生成 Web 服务参考代码?

我有一个 WCF 服务,我们称之为 MaterialService.svc。它看起来像这样:

[ServiceContract]
public interface IMaterialService
{
    [OperationContract]
    Material GetMaterial(int id);
}

[DataContract]
public class Material
{
    [DataMember]
    public int ID { get; set; }

    [DataMember]
    public string Name { get; set; }
}

当我将服务添加为服务引用并生成客户端代码时,每个类都设置为实现INotifyPropertyChanged

public partial class Material : object, System.ComponentModel.INotifyPropertyChanged {

    private int IDField;

    private string NameField;

    [System.Runtime.Serialization.DataMemberAttribute()]
    public int ID {
        get {
            return this.IDField;
        }
        set {
            if ((this.IDField.Equals(value) != true)) {
                this.IDField = value;
                this.RaisePropertyChanged("ID");
            }
        }
    }

    [System.Runtime.Serialization.DataMemberAttribute()]
    public System.Nullable<string> Name {
        get {
            return this.NameField;
        }
        set {
            if ((this.NameField.Equals(value) != true)) {
                this.NameField = value;
                this.RaisePropertyChanged("Name");
            }
        }
    }
}

如何生成未实现INotifyPropertyChanged 的客户端代码?

【问题讨论】:

    标签: c# .net wcf silverlight inotifypropertychanged


    【解决方案1】:

    添加服务引用后,打开服务引用下的文件Reference.svcmap(您可能需要在“项目”菜单中启用“显示所有文件”选项)。在那里找到&lt;EnableDataBinding&gt; 元素,并将值更改为false。这将从生成的数据合约中删除INotifyPropertyChanged

    【讨论】:

    • 它有效,非常感谢 :) 对于任何和我有同样问题的人,我联系了 Simon Cropp,他制作了一个支持现有 RaisePropertyChanged 调用的新版本,这样也解决了问题,但这仍然很高兴知道:)
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多