У меня есть ссылка на службу, которая использует BasicHttpBinding, но когда reference.cs генерируется с использованием VS, некоторые свойства, не реализующие RaisePropertyChanged, теперь (хотя это приемлемо), а логика в setter игнорируется/удален (что очень неприемлемо!).Сгенерированный код reference.cs с INotifyPropertyChanged
Я пробовал настраивать ссылку на службу различными способами и помещать логику в событие RaisePropertyChanged, но ничто, кажется, не устраняет это.
Любая помощь очень ценится, короткий код ниже.
Оригинальный код в службу
public class Entry : INotifyPropertyChanged
{
private string m_Firstname;
private string m_Foo;
public string Firstname
{
get { return m_Firstname; }
set
{
m_Firstname = value;
Foo = "bar";
OnPropertyChanged("Firstname");
}
}
public string Foo
{
get { return m_Foo; }
set { m_Foo = value; }
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string propertyName)
{
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null))
{
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
Сгенерированный код в Reference.cs
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.1586.0")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.domain.com/")]
public partial class Entry : object, INotifyPropertyChanged {
private string firstnameField;
private string foo;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=1)]
public string Firstname {
get { return this.preferredContactMethodField; }
set {
this.firstnameField = value;
this.RaisePropertyChanged("Firstname");
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public string Foo {
get { return this.foo; }
set {
this.foo= value;
this.RaisePropertyChanged("Foo");
}
}
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if ((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
Обратите внимание на попытку установить Foo в инкубаторе ПгвЬЫате пошел и RaisePropertyChanged в Foo сеттер появился.
Насколько я вижу, это неотъемлемая часть процесса, который генерирует файл Reference.cs, и я ничего не могу сделать, чтобы мой исходный код вытягивал - особенно попытка установить Foo, это правильно?
Заранее спасибо
К сожалению, следует упомянуть, что это веб-служба (asmx) и стандартная справочная служба, а не .svc, что является единственным способом, которым я могу это сделать. – user1919214
Вы также можете добавить ссылку на службу с помощью службы asmx. – Sefe