質問

あなたはWCF DataContratでToString関数をオーバーライドすることはできますか?今、私は持っています:

[DataContract]
public class Keyword
{
    public int ID { get; set; }
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}

しかし、動作するようには思えません。とにかく、この作業を取得するには?

役に立ちましたか?

解決

あなたは、サーバーとクライアントの両方を所有している場合、それは多くの場合、あなたはクライアントプロキシを生成するのではなく、データコントラクトのための共有ライブラリを使用することができることにも注意してください。あなたがそれを行う場合、あなたは彼らがまったく同じタイプだとして、サーバーとクライアントの両方で同じメソッドを持つことができます。

他のヒント

私はこれが古い実現が、私はちょうどこのアイデアを使用同僚のためのサンプルアプリケーションを作成したので、答えを提供したかったです。この作品のすべてが消費者/テストクライアント側で行うことができます。

あなたは消費者/テストクライアント上のコードを見てみると、

は、より具体的には、サービス参照の一部として生成されたクラスは、あなたが[の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 {

あなたが使用する必要があります重要なビットはnamespacepartial 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;
        }
    }
}

は、彼らが[データメンバー]の値であるので、私はKeyTimestampValueを参照できることに注意してください[のDataContract]。

あなたが探しているものを知っていれば、

これは比較的簡単です。ここで何が明確でない場合は、私が知っていると私は明確にしようとしてください。

おかげ

どこToString()を呼び出すことができるようにしたいですか?あなたがクライアント用のプロキシを作成するときに、彼らは利用できませんので、方法はのDataContractの一部ではありません。

もちろん、何もクライアントの代理で自分自身をその符号化方法からあなたを停止されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top