有2个项目:MyServer& MyClient在一个解决方案中。想要使用两个项目中的Message类的对象(分别是MessageServer和MessageClient)。 我添加了客户端对服务器项目的引用,但不能反过来,因为我得到错误“...会导致循环依赖”。所以我有
using TestMyClient;
namespace TestMyServer
{
public class MessageServer
{
在服务器端,然后我在代码= new XmlSerializer(typeof(TestMyClient.MessageClient));
我想拥有相同的,但在客户端。遗憾的是,我无法输入TestMyServer
作为using
命名空间,因此我无法引用MessageServer
类......
如何交叉使用这些类?
答案 0 :(得分:2)
你的问题不明确 - 为什么你想要两种不同的类型并不明显 - 但答案是在命名空间中有一个类型,服务器和客户项目参考。
Server Client
\ /
\ /
Common
没有循环依赖,一个共享类型,每个人都很高兴。
如果您确实需要两种消息类型(例如,一个用于请求,一个用于响应),则在Common项目中定义两个消息。我建议你不称呼他们MessageServer
和MessageClient
- 服务器和客户端都会使用这两条消息,一个人会生成它而另一个人会消耗它。使用请求和响应的术语通常要清楚得多。
答案 1 :(得分:1)
一般情况下:如果你有两个'东西'依赖于另一个的功能(循环依赖),那么将常用功能提取到第三个东西。让现有的东西都引用新的第三件事。
当这些东西是课程时,例如MessageServer
和MessageClient
,然后将常用功能提取到Message
类中,让原始的两个类派生自新类。
当这些东西是项目时,例如AwesomeServer
和AwesomeClient
,然后将常用功能(例如Message
类)提取到新的Awesome
项目中,让原始的两个项目引用新项目。