【问题标题】:Using .NET 2.0 class library from Silverlight WCF service, public properties remain unexposed使用 Silverlight WCF 服务中的 .NET 2.0 类库,公共属性保持未公开
【发布时间】:2009-09-08 22:05:13
【问题描述】:

这是我正在处理的一个有点微妙的问题,希望能提供任何帮助。

我们有我们的生产模式项目,使用 .NET 2.0 构建。我们最近在 2.0 解决方案之外开发了一个 Silverlight 应用程序,它与 WCF 服务“对话”。该服务使用我们从 2.0 解决方案发布文件夹中复制的 DLL,以便访问我们原始解决方案的功能。

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

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

我的问题主要是如何只公开公共属性,而不公开私有变量?

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

伊塔马尔。

【问题讨论】:

    标签: .net wcf silverlight-2.0


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多