0

オブジェクトのリストをサービスに渡す必要がある状況があります。オブジェクトはELEMENTタイプである必要があります。Elementインターフェースをそのように定義しています

public interface IElement{ }

次に、DataContractsにこのIElementクラスを継承させます。。。。

[KnownType(typeof(Common.IElement))]
[DataContract]
public abstract class IPet : IElement
 {.....}

また、サービスインターフェイスにKnownType属性があります。

[ServiceContract(Name="Pets", SessionMode = SessionMode.Allowed)]
[ServiceKnownType(typeof(Memberships.PetServiceUser))]
[ServiceKnownType(typeof(.Common.IElement))]
[DeliveryRequirements(RequireOrderedDelivery=true)] 
public interface IPetService {.....}

問題はクライアント側にあり、IElementタイプはクライアントのサービスタイプの逆シリアル化では使用できません。私がここで間違っている可能性があることと、これを修正する方法を教えてください。

なし

4

1 に答える 1

0

あなたがここでやろうとしていることをすべて理解しているとは100%確信していませんが、私には逆さまに思えます。KnowType属性を使用する通常の方法は、基本型を派生型で装飾することです。次のようなもの:

[DataContract]
[KnownType(typeof(Pet))]
[KnownType(typeof(...
...
public class Element: IElement
{
....
于 2010-07-09T00:52:53.247 に答える