前一篇文章中我曾经说过,现在正在做一个小小的框架以实现采用统一的API实现对上下文(Context)信息的统一管理。这个框架同时支持Web和GUI应用,并支持跨线程传递和跨域传递(这里指在WCF服务调用中实现客户端到服务端隐式传递),以及对上下文项目(ContextItem)的读写控制。关键就在于后面两个特性的支持上面,出现一个小小的关于序列化的问题。解决方案只需要改动短短的一行代码,结果却让我折腾了老半天。

为了重现我实际遇到的问题,我特意将问题简化,为此我写了一个简单的例子(你可以从这里下载)。在下面的代码片断中,我创建了一个名称为ContextItem的类型,代表一个需要维护的上下文项。由于需要在WCF服务调用实现自动传递,我将起定义成DataContract。ContextItem包含Key,Value和ReadOnly三个属性,不用说ReadOnly表示该ContextItem可以被修改。注意Value属性Set方法的定义——如果ReadOnly则抛出异常。

)]
class ContextItem
   3: {
null;
   5:     [DataMember]
private set; }
   7:     [DataMember]
object Value
   9:     {
  10:         get
  11:         {
value;
  13:         }
  14:         set
  15:         {
this.ReadOnly)
  17:             {
);
  19:             }
value;
  21:         }
  22:     }
  23:     [DataMember]
bool ReadOnly { get; set; }
value)
  26:     {
string.IsNullOrEmpty(key))
  28:         {
);
  30:         }
this.Key = key;
value;
  33:     }
  34: }

相关文章:

  • 2021-08-04
  • 2021-11-02
  • 2021-09-13
  • 2022-12-23
  • 2022-12-23
  • 2021-12-02
  • 2022-12-23
猜你喜欢
  • 2021-08-16
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2021-08-24
  • 2021-10-03
  • 2022-12-23
相关资源
相似解决方案