-1

有 2 个项目:MyServer 和 MyClient 在一个解决方案中。想要使用两个项目中的 Message 类的对象(分别为 MessageServer 和 MessageClient)。我将客户端的引用添加到服务器项目,但不能做相反的事情,因为我收到错误"...would cause a circular dependency"。所以我有

using TestMyClient;

namespace TestMyServer
{
    public class MessageServer
    {

在服务器端,然后我在代码中使用它= new XmlSerializer(typeof(TestMyClient.MessageClient));

我想要相同的,但在客户端。可悲的是,我无法输入TestMyServerasusing命名空间,因此我无法引用MessageServer该类...

如何交叉使用这些类?

4

2 回答 2

2

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

Server     Client
   \        /
    \      /
     Common

没有循环依赖,一种共享类型,每个人都开心。

如果您确实需要两种消息类型(例如,一种用于请求,一种用于响应),则在 Common 项目中定义这两种消息。我建议您不要调用它们MessageServer,但是-服务器MessageClient客户端都将使用这两条消息,因为一条消息将生成它,而另一条消息将使用它。使用请求和响应的术语通常要清楚得多。

于 2013-04-17T21:52:20.857 回答
1

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

当这些东西是类时,例如MessageServerand MessageClient,然后将通用功能提取到Message类中,并让原来的两个类派生自新类。

当这些东西是项目时,例如AwesomeServerand ,然后将通用功能(例如类)AwesomeClient提取到一个新项目中,并让原来的两个项目引用新项目。MessageAwesome

于 2013-04-17T23:05:31.473 回答