Сервис не реализует метод get / set Property - PullRequest
0 голосов
/ 20 января 2012

У меня проблемы с диспетчером ссылок на службы в моем приложении Silverlight, заменяющим методы get и set свойства на общее.

Мой пример: в моей службе есть класс Rule, который имееттри открытых свойства, которые все используют один и тот же закрытый член.

[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 вести себя как класс наСервисная сторона?

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Не используйте сервисные ссылки. Они злые. Если вы воспользуетесь Google «Silverlight WCF без справочника услуг», вы найдете несколько хороших руководств.

0 голосов
/ 21 января 2012

Сначала добавьте сборки, в которых находятся эти классы, в качестве ссылок на ваш проект Silverlight.При создании ссылки на службу установите флажок «Повторное использование типов в ссылочных сборках» и либо повторно используйте все ссылочные сборки, либо выберите и выберите конкретные сборки для повторного использования.Сборки, на которые ссылается служба напрямую (и любые зависимости), также будут частью приложения Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...