Измените referenceequals на equals в reference.cs - PullRequest
2 голосов
/ 17 декабря 2010

У меня есть приложение wpf, которое использует веб-сервис wcf.Это мой веб-сервис и приложение, поэтому я могу вносить изменения в любую сторону.В файле Reference.cs, который автоматически генерируется Visual Studio, он использует этот код для события измененного свойства:

[System.Runtime.Serialization.DataMemberAttribute()]
    public string Value {
        get {
            return this.ValueField;
        }
        set {
            if ((object.ReferenceEquals(this.ValueField, value) != true)) {
                this.ValueField = value;
                this.RaisePropertyChanged("Value");                    
            }
        }
    }

Для строк, хотя мне действительно хотелось бы следующее:

[System.Runtime.Serialization.DataMemberAttribute()]
    public string Value {
        get {
            return this.ValueField;
        }
        set {
            if ((object.ReferenceEquals(this.ValueField, value) != true)) {
                if (this.ValueField != value)
                {
                    this.ValueField = value;
                    this.RaisePropertyChanged("Value");
                }
            }
        }
    }

Таким образом, событие изменения свойства не сработает, если значение будет тем же.Почему это проблема, потому что я слушаю OnPreviewTextInput текстового поля и изменяю значение программно, затем событие отключается дважды, один раз, потому что я изменил его, и один раз, потому что wpf изменил его через привязку.

Спасибо,

1 Ответ

0 голосов
/ 17 декабря 2010

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

В диалоговом окне добавления справки WCF вы можете указать егоповторно используйте типы, тогда он будет использовать любую реализацию вашего объекта данных, существующую в общей сборке на клиенте.

...