C#项目:对象交叉使用

时间:2013-04-17 21:50:26

标签: c# .net reference namespaces

有2个项目:MyServer& MyClient在一个解决方案中。想要使用两个项目中的Message类的对象(分别是MessageServer和MessageClient)。 我添加了客户端对服务器项目的引用,但不能反过来,因为我得到错误“...会导致循环依赖”。所以我有

using TestMyClient;

namespace TestMyServer
{
    public class MessageServer
    {

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

中使用它

我想拥有相同的,但在客户端。遗憾的是,我无法输入TestMyServer作为using命名空间,因此我无法引用MessageServer类......

如何交叉使用这些类?

2 个答案:

答案 0 :(得分:2)

你的问题不明确 - 为什么你想要两种不同的类型并不明显 - 但答案是在命名空间中有一个类型,服务器和客户项目参考。

Server     Client
   \        /
    \      /
     Common

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

如果您确实需要两种消息类型(例如,一个用于请求,一个用于响应),则在Common项目中定义两个消息。我建议你称呼他们MessageServerMessageClient - 服务器客户端都会使用这两条消息,一个人会生成它而另一个人会消耗它。使用请求和响应的术语通常要清楚得多。

答案 1 :(得分:1)

一般情况下:如果你有两个'东西'依赖于另一个的功能(循环依赖),那么将常用功能提取到第三个东西。让现有的东西都引用新的第三件事。

当这些东西是课程时,例如MessageServerMessageClient,然后将常用功能提取到Message类中,让原始的两个类派生自新类。

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