Ich versuche, ein Datenkontraktobjekt, das ich auf dem Server erhalten habe, zu nehmen, einige Manipulationen daran vorzunehmen und dann eine upcasted-Version davon zurückzugeben, aber es scheint nicht zu funktionieren. Ich kann es mit den Attributen KnownType oder ServiceKnownType zum Laufen bringen, aber ich möchte nicht alle Daten runden. Unten ist ein Beispiel:WCF DataContract Upcasting
[DataContract]
public class MyBaseObject
{
[DataMember]
public int Id { get; set; }
}
[DataContract]
public class MyDerivedObject : MyBaseObject
{
[DataMember]
public string Name { get; set; }
}
[ServiceContract(Namespace = "http://My.Web.Service")]
public interface IServiceProvider
{
[OperationContract]
List<MyBaseObject> SaveMyObjects(List<MyDerivedObject> myDerivedObjects);
}
public class ServiceProvider : IServiceProvider
{
public List<MyBaseObject> SaveMyObjects(List<MyDerivedObject> myDerivedObjects)
{
... do some work ...
myDerivedObjects[0].Id = 123;
myDerivedObjects[1].Id = 456;
myDerivedObjects[2].Id = 789;
... do some work ...
return myDerivedObjects.Cast<MyBaseObject>().ToList();
}
}
jemand irgendwelche Ideen, wie diese zu erhalten, ohne neue Objekte neu erstellen zu müssen, arbeiten oder die Knowntype Attribute verwenden?
Die IList sendet gut. Es ist, wenn ich versuche, das Objekt zu verbessern, das nicht funktioniert. Ich möchte nicht alle Daten hin- und herdrehen. –
Sie könnten versuchen, benutzerdefinierten Zuordnungscode oder Schnittstellen zu verwenden. –