C# 服务不';t实现属性';s get/set方法

C# 服务不';t实现属性';s get/set方法,c#,silverlight,service,properties,C#,Silverlight,Service,Properties,我的Silverlight应用程序中的服务引用管理器用泛型方法替换属性的get和set方法时遇到问题 我的示例:我的服务中有一个规则类,它有三个公共属性,它们都使用同一个私有成员 [DataContract] public class RulesReadable { [DataMember] private bool? m_passed; ... [DataMember] public bool? State { get { r

我的Silverlight应用程序中的服务引用管理器用泛型方法替换属性的get和set方法时遇到问题

我的示例:我的服务中有一个规则类,它有三个公共属性,它们都使用同一个私有成员

[DataContract]
public class RulesReadable
{
    [DataMember]
    private bool? m_passed;

    ...

    [DataMember]
    public bool? State
    {
        get { return m_passed; }
        set { m_passed = value; }
    }

    [DataMember]
    public bool HasPassed
    {
        get { return (m_passed == true) ? true : false; }
        set { m_passed = value; }
    }

    [DataMember]
    public bool HasFailed
    {
        get { return (m_passed == false) ? true : false; }
        set { m_passed = !value; }
    }
}
当我调用该服务时,返回该数据类型,并尝试获取/设置属性,我发现每个属性都有自己的变量,而不是在三个属性之间共享一个变量。如果我转到Silverlight端的类定义,我会发现事实上发生了这样的事情:

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="Manager.RulesReadable", Namespace="http://schemas.datacontract.org/2004/07/MyWebApp.Services")]
public partial class ManagerRulesReadable : object, System.ComponentModel.INotifyPropertyChanged {

    private bool HasFailedField;

    ...

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

    ...

}

如何使Silverlight端的类的行为与服务端的类类似?

首先添加这些类所在的程序集,作为对Silverlight项目的引用。创建服务引用时,选中“在引用的程序集中重用类型”复选框,然后重用所有引用的程序集,或者选择要重用的特定程序集。服务直接引用的程序集(以及任何依赖项)也将成为Silverlight应用程序的一部分。

不使用服务引用。他们是邪恶的。如果你在谷歌上搜索“Silverlight WCF With Service Reference”,你会发现一些不错的教程。

我查看了它,已经选择了“在所有引用的程序集中重用类型”。上面的“在所有引用的程序集中重用类型”是否选中?您可能需要删除并重新添加引用,以使用引用的程序集重新生成引用。请注意,名称空间可能会更改,因此您必须进入并修改用法。我最接近的方法是添加一个代码文件作为链接,因为我认为我无法将非Silverlight程序集添加到Silverlight项目()。链接文件后,我在Silverlight中删除并重新创建了ServiceReference,但仍然存在相同的问题。您是否统一了两个项目之间的名称空间?请看这里: