代码之家  ›  专栏  ›  技术社区  ›  synhershko

使用Silverlight WCF服务中的.NET 2.0类库,公共属性保持未公开

  •  0
  • synhershko  · 技术社区  · 15 年前

    这里有一点微妙的问题,我正在处理,并将感谢任何帮助。

    WCF服务公开了来自我们2.0解决方案的几个方法和对象。显然,它在内部使用[DataContract]和[DataMember],而这些在我们的原始解决方案中是不可用的(因为它是.NET 2.0,目前升级到3.5是不可能的)。幸运的是,WCF能够将我们的可序列化对象视为契约,但出于某种奇怪的原因,只有成员变量(即使定义为私有!)被序列化;属性,即使是可设置的和公共的,也永远不会序列化。

    我们需要公开的对象类上定义了[Serializable()]。我环顾四周,找不到一个很好的解决方案/解释。这可能与.NET 3.0/3.5如何“查看”我的2.0对象有关(它假定[DataMember]仅在变量上,而不在属性上)。

    提前感谢您对此的任何见解。

    伊塔马尔。

    1 回复  |  直到 15 年前
        1
  •  0
  •   synhershko    15 年前

    原因尚不清楚。我们绕过了这个问题,从公开对象(驻留在通过WCF项目使用的编译DLL中)派生,然后重新创建我们需要的属性和帮助函数。或者在需要的地方添加新的成员属性。然后我们在内部使用这个新对象(这有时需要有一个专门的构造函数来进行一些复制或调整)。不是很理想,但很有效。