C#项目:对象交叉使用
在一个解决方案中有两个项目:MyServer和MyClient。希望使用消息类的对象,该对象位于两个项目中(分别为MessageServer和MessageClient)。 我将客户机的引用添加到服务器项目中,但无法执行相反的操作,因为我得到错误“…将导致循环依赖”。所以我有C#项目:对象交叉使用,c#,.net,reference,namespaces,C#,.net,Reference,Namespaces,在一个解决方案中有两个项目:MyServer和MyClient。希望使用消息类的对象,该对象位于两个项目中(分别为MessageServer和MessageClient)。 我将客户机的引用添加到服务器项目中,但无法执行相反的操作,因为我得到错误“…将导致循环依赖”。所以我有 using TestMyClient; namespace TestMyServer { public class MessageServer { 在服务器端,然后在代码=newxmlserialize
using TestMyClient;
namespace TestMyServer
{
public class MessageServer
{
在服务器端,然后在代码=newxmlserializer(typeof(TestMyClient.MessageClient))中使用它代码>
我想要同样的,但是在客户端。遗憾的是,我无法使用
名称空间将TestMyServer
作为输入,因此我无法引用MessageServer
类
如何交叉使用这些类?您的问题不清楚-不清楚为什么您希望有两种不同的类型-但答案是在服务器和客户端项目都引用的命名空间中有一种类型
Server Client
\ /
\ /
Common
没有循环依赖,只有一种共享类型,每个人都很高兴
如果您实际需要两种消息类型(例如,一种用于请求,另一种用于响应),那么在公共项目中定义这两种消息。不过,我建议您不要将它们称为MessageServer
和MessageClient
——这两条消息都将由服务器和客户端使用,因为一条消息将生成它,另一条消息将使用它。使用请求和响应的术语通常要清楚得多。一般来说:如果您有两个“东西”依赖于另一个的功能(循环依赖),那么将公共功能提取到第三个东西中。让两个现有事物都引用第三个新事物
当这些东西是类时,例如MessageServer
和MessageClient
,然后将公共功能提取到Message
类中,并让原来的两个类从新类派生
当这些东西是项目时,例如AwesomeServer
和AwesomeClient
,然后将公共功能(例如Message
类)提取到一个新的Awesome
项目中,并让原来的两个项目引用新项目。好的,使用公共对象很有意义。谢谢。:)但如果我将来需要在其他情况下应用交叉使用该怎么办。那么我可能会陷入同样的问题?