1

次のクラスのオブジェクトは、引数として WCF Web サービスに渡す必要があります。

    public class Context
    {
        public static readonly string AUTH_CODE = "AUTH_CODE";

        public static readonly string REQUEST_TAG = "REQUEST_TAG";

        private readonly IDictionary<string, string> _context = new Dictionary<string, string>();

        public void AddProperty(string key, string value)
        {
            _context.Add(key, value);
        }

        public string GetProperty(string name)
        {
            return _context[name];
        }
    }

[DataContract] でクラスにタグを付け、[DataMember] で AUTH_CODE、REQUEST_TAG、および _context フィールドにタグを付けました。クラス自体は、サーバー側で Web サービスとともに定義されます。

このクラスのオブジェクトをインスタンス化して、クライアントから Web サービスを呼び出すときにパラメーターとして渡すことができるようにしようとすると、次のことがわかります。

  1. AUTH_CODE と REQUEST_TAG は表示されません。
  2. _context は非公開メンバーですが表示されます
  3. AddProperty メソッドと GetProperty メソッドは表示されません

上記の挙動について教えてください。

また、Web サービスを呼び出す前に、AddProperty メソッドにアクセスしてオブジェクトを設定する必要があります。どうすればこれを達成できますか?

注 :これは WCF の初めての経験です。そのような行動を達成するための標準的な慣行から逸脱している場合は、アドバイスしてください.

4

1 に答える 1

2
  1. 静的メンバーに適用される場合、DataMemberAttribute 属性は無視されます。
  2. メンバーのアクセシビリティ レベル (内部、プライベート、保護、またはパブリック) は、データ コントラクトにまったく影響しません。
  3. データ コントラクトは状態のみをサポートし、動作はサポートしません。したがって、メソッドはデータ コントラクトに影響しません。

データ コンタクトの動作については、次の MSDN リンクで説明されています: http://msdn.microsoft.com/en-us/library/ms733127.aspx

于 2013-08-23T08:48:05.250 に答える