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

本文关键字:DataContract 访问 对象 方法 web 服务 客户端 WCF | 更新日期: 2023-09-27 18:28:54

以下类的对象需要作为参数传递给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]和AUTH_CODE标记了类,用[DataMember]标记了REQUEST_TAG和_context字段。类本身是与服务器端的web服务一起定义的。

当我试图实例化这个类的对象,以便在从客户端调用web服务时将其作为参数传递时,我观察到以下内容:

  1. AUTH_CODE和REQUEST_TAG不可见
  2. _上下文是可视的,尽管它是私有成员
  3. AddProperty和GetProperty方法不可见

你能解释一下上述行为吗?

此外,在调用web服务之前,我需要访问AddProperty方法来填充对象。我该如何做到这一点?

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

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

  1. 如果DataMemberAttribute属性应用于静态成员,则会忽略该属性
  2. 成员可访问性级别(内部、专用、受保护或公共)不会以任何方式影响数据契约
  3. 数据契约只支持状态,不支持行为。因此,您的方法不会影响您的数据合约

以下MSDN链接中描述了数据联系人的行为:http://msdn.microsoft.com/en-us/library/ms733127.aspx