私はサーバー上で受け取ったdatacontractオブジェクトを取得しようとしていますが、その上で何らかの操作を行ってからアップキャストされたバージョンを返しますが、動作していないようです。私はKnownTypeまたはServiceKnownType属性を使って動作させることができますが、すべてのデータをラウンドトリップしたくありません。以下は例です: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();
}
}
誰もが、これは新しいオブジェクトを再作成することやKnownType属性を使用せずに動作させるためにどのように任意のアイデアがありますか?
IListが問題なく送信します。それは私が動作しないオブジェクトをアップキャストしようとするときです。私はすべてのデータをラウンドトリップしたくありません。 –
カスタムマッピングコードまたはインターフェイスを使用できます。 –