これは古いことですが、このアイデアを使用した同僚向けのサンプルアプリを作成したばかりなので、答えを提供したいと思います。この作業はすべて、コンシューマー/テストクライアント側で実行できます。
コンシューマー/テストクライアントのコード、より具体的には、サービス参照の一部として生成されるクラスを見ると、関心のある[DataContract]タイプが表示されます。これを行うには、次のようにする必要があります。 [すべてのファイルを表示]が選択されていることを確認してください。'Reference.cs'クラスにドリルダウンします。これは、Reference.csのテストクラスのトップです。
namespace WebApplication1.UCCTestSvcRef {
using System.Runtime.Serialization;
using System;
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="UCCRecord", Namespace="http://schemas.datacontract.org/2004/07/UCCTest")]
[System.SerializableAttribute()]
public partial class UCCRecord : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
使用する必要のある重要なビットは、namespace
とpartial class
です。これらを利用するには、同じタイプの同じ名前空間のテストクライアントに新しいクラスを作成し、ToString()メソッドをオーバーライドするだけです。これは、コンシューマー/テストクライアントで新しく作成されたUCCRecord.csファイルからこれを行う方法の例です。
namespace WebApplication1.UCCTestSvcRef
{
public partial class UCCRecord
{
public override string ToString()
{
return "Key: " + Key.ToString() + ", Time: " + Timestamp.ToString("d") + ", Value: " + Value;
}
}
}
Key
参照できるのはとのみであることに注意してくださいTimestamp
。Value
これらは[DataContract]の[DataMember]値であるためです。
探しているものがわかっていれば、これは比較的簡単です。ここで不明な点がある場合は、お知らせください。明確にするよう努めます。
ありがとう