WCF:使Web服务客户端可以访问DataContract对象中的方法

时间:2013-08-23 07:50:39

标签: c# wcf

以下类的对象需要作为参数传递给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方法不可见
  4. 您能解释一下上述行为吗?

    另外,在调用Web服务之前,我需要访问AddProperty方法来填充对象。我如何实现这一目标?

    注意:这是我第一次使用WCF。如果我偏离实现此类行为的任何标准做法,请提供建议。

1 个答案:

答案 0 :(得分:2)

  1. 如果DataMemberAttribute属性应用于静态成员,则会忽略该属性。
  2. 会员可访问性级别(内部,私有,受保护或公开)不会以任何方式影响数据合同。
  3. 数据合同仅支持状态,而不支持行为。因此,您的方法不会影响您的数据合同。
  4. 以下MSDN链接中描述了数据联系人的行为:http://msdn.microsoft.com/en-us/library/ms733127.aspx