当您生成服务引用时,它只复制公共属性和字段。您可以在服务器和客户端之间共享类并避免使用服务引用。我不会详细介绍如何执行此操作,但这里有一些相关的问题可以解释需要做什么。
在没有自动生成代理的情况下创建 WCF 客户端
在 silverlight 上异步调用同步 WCF 操作合同方法
即使您这样做,我也必须建议不要将逻辑放在您的 DTO 上。我建议创建一个LoyaltyCalculator
类并将 a 传递Customer
给它。事实上,即使您通过Add Service Reference选项使用生成客户端,您也可以这样做。
您的默认 Silverlight 解决方案将有 2 个项目。
- MyApp - 这是您的 Silverlight 项目。
- MyApp.Web - 这是宿主 Web 项目。
您不需要这样做,但我建议添加 2 个新项目。
- MyApp.Shared - 一个 .NET 类库
- MyApp.Shared.Silverlight - Silverlight 类库。
此时,您需要向 Silverlight 项目和 Web 项目添加对适当类库的项目引用。
将类添加LoyaltyCalculator
到MpApp.Shared
,或者MyApp.Web
如果您不想创建共享库。继续在这里实现这个类。
现在在 中MyApp.Shared.Silverlight
,或者MyApp
如果您不想创建共享库,请选择Add -> Existing Item。浏览并选择LoyaltyCalculator.cs
。 不要双击它!!! 相反,单击“添加”按钮上的小向下/更多箭头。现在选择Add As Link。
LoyaltyCalculator
现在您的服务器和客户端都可以使用,您只需维护一份副本。