0

次のような Document という MessageContract があります。

[MessageContract]
public class Document : IDisposable
{
    [MessageHeader(MustUnderstand = true)]
    public string FileName;

    [MessageHeader(MustUnderstand = true)]
    public bool IsUploaded = false;

    [MessageBodyMember(Order = 1)]
    public Stream FileByteStream;

    public void Dispose()
    {
        if (FileByteStream != null)
        {
            FileByteStream.Close();
            FileByteStream = null;
        }
    }
}

ほとんどの場合、これで問題ありません。インテリセンスに表示され、問題なくインスタンス化できます。しかし、次のような新しいコントラクトを追加する必要がありました。

[MessageContract]
public class Dummy
{
    public int DummyID;
    public Image DummyImage;
    public int PageNumber;
}

十分に単純に見えました。プロジェクトをビルドし、サービス リファレンスを更新しました。しかし、そのクラスは表示されず、インスタンス化できません。

ここで私が間違っていることについてのアイデアはありますか?

4

2 に答える 2

0

ここでは、DummyId、DummyImage、および PageNumber が配置される場所を宣言していません。メッセージ本文またはメッセージ ヘッダーのいずれかです。メッセージ コントラクトの使用方法の詳細については、こちらを参照してください

于 2013-06-14T16:45:29.387 に答える
0

ここから答えを得ました。

サービスで実際に使用される型のみがメタデータに反映されます。

DataContract を使用した操作コントラクトがありませんでした。当時は必要がなかったので、作りませんでした。しかし、どうやら、それを使用するものがない限り、その DataContract のメタデータは生成されません。

于 2013-06-17T14:19:04.313 に答える