2012-08-10 27 views
8

Estoy usando Fody en un proyecto de SilverLight para autogenerar dependencias de propiedad. Sin embargo, no funciona si los programadores ya contienen una llamada a un método RaisePropertyChanged.¿Cómo generar una referencia de servicio web sin INotifyPropertyChanged?

Una solución podría ser generar el código de referencia del servicio web sin INotifyPropertyChanged y en su lugar implementarlo en un método parcial.

¿Cómo puedo generar el código de referencia del servicio web sin INotifyPropertyChanged?

Tengo un servicio WCF, llamémoslo MaterialService.svc. Se ve algo como esto:

[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; } 
} 

Cuando agrego el servicio como una referencia de servicio y generar código de cliente, todas las clases se establece para implementar 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"); 
      } 
     } 
    } 
} 

¿Cómo puedo generar código de cliente que doesn ¿Implementar INotifyPropertyChanged?

Respuesta

13

Después de agregar la referencia del servicio, abra el archivo Reference.svcmap debajo de la referencia del servicio (puede necesitar habilitar la opción "mostrar todos los archivos" en el menú "Proyecto"). Allí encontrará el elemento <EnableDataBinding>, y cambie el valor a falso. Eso eliminará el INotifyPropertyChanged de los contratos de datos generados.

+0

Funciona, muchas gracias :) Para cualquiera que tenga el mismo problema que yo en Fody, me puse en contacto con Simon Cropp e hizo una nueva versión que admite llamadas existentes RaisePropertyChanged, así que también solucionó el problema, pero aún así es agradable saber :) –

Cuestiones relacionadas