Wenn ich eine generische Klasse in einem WCF-Dienst habenGetter und Setter für Generics über WCF
[DataContract(Name = "TestGenericOf{0}")]
public class TestGeneric<T>
{
[DataMember]
public string TestProperty
{
get { return _testProperty.ToUpper(); }
set { _testProperty = value; }
}
private string _testProperty;
}
und einem Client (MVC in diesem Fall) verbraucht den Dienst durch einen Dienstverweis. Ich möchte die Getter- und Setter-Logik zwischen dem Dienst und dem Client teilen; Da die Klasse jedoch generisch ist, unterscheidet sich die auf dem Client erstellte Klasse von der auf dem Dienst.
public partial class TestGenericOfstring : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
[System.Runtime.Serialization.OptionalFieldAttribute()]
private string TestPropertyField;
[System.Runtime.Serialization.DataMemberAttribute()]
public string TestProperty {
get {
return this.TestPropertyField;
}
set {
if ((object.ReferenceEquals(this.TestPropertyField, value) != true)) {
this.TestPropertyField = value;
this.RaisePropertyChanged("TestProperty");
}
}
}
}
Was wäre der beste Weg, beide zu gehen über den gleichen Getter, Setter implementierende Logik auf den Service und dem Kunden?
Es ist nur ein Datenvertrag, der einen Vertrag angibt, kein explizites Verhalten. Der Aufruf von ToUpper() wird nicht auf dem Client vorhanden sein (außer der Client verfügt über Ihre Klassen). – sisve
Ich glaube, dass der Anruf zu 'ToUpper' noch immer passieren wird. Wenn Ihr Client den Webdienst aufruft, verwenden die Daten, die der WS zurückgibt, den Getter in Ihrem Code. Wenn Sie das WS nicht aufrufen und dieses Objekt nicht erhalten, sollten Sie die Eigenschaft wiederholt setzen und abrufen, und Sie sollten keine Probleme haben. Das ursprüngliche zurückgegebene Objekt sollte "ToUpper" aufgerufen haben. –
@RyanP Sehr wahr, aber ich versuche, die Eigenschaft im Client festzulegen. Was wäre der sauberste Ansatz, um die Logik im Client zu duplizieren? – user654616