C# 在WCF/WPF客户端/WPF用户控件之间共享实体的最佳实践是什么

C# 在WCF/WPF客户端/WPF用户控件之间共享实体的最佳实践是什么,c#,wpf,wcf,wpf-controls,wcf-binding,C#,Wpf,Wcf,Wpf Controls,Wcf Binding,我有一个包含几个项目的解决方案: 具有DataContracts定义的类库 WCF服务库引用1 WPF用户控制库 服务引用为2和3的WPF客户端应用程序 当我在WPF客户端应用程序中使用带有服务引用的代理生成时,数据实体将在该项目中生成。接下来,我将在WPF客户端应用程序中使用WPF用户控件,这些控件位于一个单独的项目中,用于重用。我想根据一些操作将数据从客户端应用程序传递到UserControls 我的问题是,如何在WPF客户端应用程序和WPF用户控制库中引用相同的数据实体。在UserCont

我有一个包含几个项目的解决方案:

具有DataContracts定义的类库 WCF服务库引用1 WPF用户控制库 服务引用为2和3的WPF客户端应用程序 当我在WPF客户端应用程序中使用带有服务引用的代理生成时,数据实体将在该项目中生成。接下来,我将在WPF客户端应用程序中使用WPF用户控件,这些控件位于一个单独的项目中,用于重用。我想根据一些操作将数据从客户端应用程序传递到UserControls

我的问题是,如何在WPF客户端应用程序和WPF用户控制库中引用相同的数据实体。在UserControl库中,我可以放置对DataContract项目的引用,但这些类型与客户端应用程序中使用代理生成的数据类型不同。现在,我在UserControls中使用dynamic,当我将数据从ClientApp传递到UserControls时,绑定就很好地解决了。但我不喜欢这种方法。我希望能够在我的UserControls中使用泛型

我知道,如果我有权访问所有项目服务和客户端,我可以使用ChannelFactory并在所有项目中引用相同的DataContracts,但我现在的问题是关于使用服务引用生成代理的场景

那么,关于如何在不同的项目之间共享相同的数据类型,有什么想法和最佳实践吗


谢谢

服务引用配置窗口中有一个选项“在引用的assemblies.hi@LeeO中重用类型”,因此,我在客户端应用程序中有一个服务引用,它使用WCF服务中声明的DataContracts中的所有数据类型生成代理。假设我现在有一个类别,我的客户端应用程序来自服务引用。如何在UserControl库中声明具有相同类别数据类型的属性?当通过客户端应用程序中的服务引用生成accross项目的数据类型时,我如何共享这些数据类型?它们不必通过服务引用生成。可以使用DataContract定义向类库添加引用,然后在引用的程序集中选择重用类型。它将使用对类库中类的引用来创建代理,而不是在客户端上生成新类。现在您也可以在用户控件项目中引用类库了。@LeeO。我明白你的意思。那就行了。但是,如果我们在解决方案中有DataContract项目来引用它,就可以这样做。如果我们只通过一些外部URL公开WCF服务,您能告诉我们将采取什么方法吗?这意味着我们将只在客户端应用程序中随代理一起生成数据类型。然后我们如何与eht UserControl库共享该数据类型?如果其他项目需要服务引用在主客户端项目中生成的类的引用,您将无法创建可用于其他项目的UserControl库。因此,您也可以只在主客户机项目的文件夹中添加UserControls,而不是单独的项目。否则,您必须有一个循环引用UserControl->Client->UserControl。