c#项目:对象交叉使用
本文关键字:对象 项目 | 更新日期: 2023-09-27 18:09:38
有两个项目:MyServer &MyClient在一个解决方案。想要使用消息类的对象,这是在两个项目(MessageServer &MessageClient分别)。我将客户端引用添加到服务器项目,但不能做相反的事情,因为我得到错误"…会导致循环依赖"。这里是
using TestMyClient;
namespace TestMyServer
{
public class MessageServer
{
服务器端的然后我在代码= new XmlSerializer(typeof(TestMyClient.MessageClient));
我想有相同的,但在客户端。遗憾的是,我不能输入TestMyServer
作为using
命名空间,因此我不能引用MessageServer
类…
如何交叉使用这些类
你的问题不清楚-这不是很明显为什么你想要有两个不同的类型-但答案是有一个类型在一个命名空间,服务器和客户端项目都引用。
Server Client
' /
' /
Common
没有循环依赖,一个共享类型,每个人都很高兴。
如果您实际上需要两种消息类型(例如,一种用于请求,另一种用于响应),那么在Common项目中定义这两种消息。我建议你不要称它们为MessageServer
和MessageClient
——这两个消息都将被服务器和客户端使用,因为一个将生成它,另一个将消耗它。使用请求和响应的术语通常更清楚。
一般来说:如果你有两个"东西"依赖于另一个的功能(循环依赖),那么将公共功能提取到第三个东西中。让现有的两个事物都引用新的第三个事物
当这些东西是类时,例如MessageServer
和MessageClient
,然后将公共功能提取到Message
类中,并让原来的两个类从新类派生。
当这些东西是项目时,例如AwesomeServer
和AwesomeClient
,然后将公共功能(例如Message
类)提取到一个新的Awesome
项目中,并让原来的两个项目引用新项目