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类…

如何交叉使用这些类

c#项目:对象交叉使用

你的问题不清楚-这不是很明显为什么你想要有两个不同的类型-但答案是有一个类型在一个命名空间,服务器和客户端项目都引用。

Server     Client
   '        /
    '      /
     Common

没有循环依赖,一个共享类型,每个人都很高兴。

如果您实际上需要两种消息类型(例如,一种用于请求,另一种用于响应),那么在Common项目中定义这两种消息。我建议你不要称它们为MessageServerMessageClient——这两个消息都将被服务器客户端使用,因为一个将生成它,另一个将消耗它。使用请求和响应的术语通常更清楚。

一般来说:如果你有两个"东西"依赖于另一个的功能(循环依赖),那么将公共功能提取到第三个东西中。让现有的两个事物都引用新的第三个事物

当这些东西是类时,例如MessageServerMessageClient,然后将公共功能提取到Message类中,并让原来的两个类从新类派生。

当这些东西是项目时,例如AwesomeServerAwesomeClient,然后将公共功能(例如Message类)提取到一个新的Awesome项目中,并让原来的两个项目引用新项目