1

継承を使用するオブジェクト クラスがいくつかあります。サービスによって直接使用されるオブジェクトにしかアクセスできないようです。私が達成しようとしていることをお見せしましょう:

[DataContract]
public class Object1
{
   [DataMember]
   int Id {get; set;}
}

[DataContract]
public class object2: Object1
{
   [DataMember]
   string Name {get; set;}
}

[DataContract]
public class object3 
{
    [DataMember]
    int SomeNumber {get; set;}
}

サービス:

public int GetId(object2 obj)
{
    return GetTheId(object2.Name);
}

現在、サービスで object2 を使用しているため、object1 もシリアル化されます。ただし、何らかの理由で object3 を公開したい場合があります。後で別のプロセスのためにその型を決定できるように、渡す必要があるのは派生クラスである可能性があります。このオブジェクトがシリアライズされていません。DataContract / DataMember を設定するたびに、これらのオブジェクトがシリアル化されると想定しました。必要のないアイテムを公開すると問題が発生する可能性があるため、使用されていないものを公開しないことは理にかなっています。サービスによって直接使用されないオブジェクトを公開する最善の方法は何ですか? ありがとう

ダニエル

4

2 に答える 2

1

object2 (クラスの固有の名前:)) をKnownType 属性で装飾する必要があります。

[DataContract]
[KnownType(typeof(object3))]
public class object2 
{
}

object3 が object2 のサブクラスであると仮定します。

public class object3: object2
{
}
于 2009-04-06T20:14:17.450 に答える
-1

あなたはあなた自身の質問に答えたと思います。メンバーがサービスで使用されていない場合は、それらを公開しないでください。一般に、サービスの保守性が向上するため、サービスに必要な最小限のデータ セットを公開することを常にお勧めします。

于 2009-04-06T20:11:33.617 に答える