我有一个通过WCF Web服务公开的自定义数据实体(数据对象)。 WCF服务存在于Web应用程序中。然后,我有一个Silverlight应用程序,其中包含对该WCF服务的服务引用。当我添加服务引用时,会生成一个代理,其中包含一个自定义数据实体的版本。
我应该如何构建我的代码,以便在一个地方声明数据实体,并在包含WCF服务的项目和引用它的任何Silverlight应用程序之间共享?我想删除使用代理生成的数据实体的版本。
答案 0 :(得分:6)
how to do this here by Pete Brown有一个很好的例子。使用该方法,您可以在Silverlight客户端和WCF服务中使用相同的类,而无需使用生成的对象。
答案 1 :(得分:1)
声明WCF服务中的数据实体或服务引用的项目,然后从Silverlight项目中将实体添加为链接,并确保从“服务引用设置”对话框中选中“重用引用程序集中的类型”复选框。
您可以将类型放在Silverlight或WCF端。
我尝试过这样做,并发现使用DTO代替并将它们映射到Silverlight端的实体更干净,更容易使用,尽管我写了一堆映射代码以使DTO进入实体,反之亦然。
答案 2 :(得分:0)
为什么有人想这样做我不太害羞。您必须了解在代理中找到的类型是您在服务服务器站点上具有的类型的投影。它在* .g.cs文件中定义,如果更新服务引用,则会生成新的。 在我看来,这是在单个位置声明它并将其投影的最佳方式。你需要在两个地方进行单一定义。
反正我可能错了.....