Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 难以理解项目引用?_C#_.net - Fatal编程技术网

C# 难以理解项目引用?

C# 难以理解项目引用?,c#,.net,C#,.net,所以我的解决方案中有很多项目 AppName 游戏名称 AppName.Common AppName.Core 我目前在AppName.Common中托管网络,因为AppName需要它初始化,而AppName.Game需要它的某些类来存储基于它们的属性类 当我不能同时引用AppName.Common和AppName.Game时,就会出现问题。Common要求游戏的类知道在新数据包进入时调用什么,而游戏项目需要网络(Dotnety)为属性使用这些类 我不明白为什么微软会阻止双向引用,要达到你想

所以我的解决方案中有很多项目

  • AppName
  • 游戏名称
  • AppName.Common
  • AppName.Core
我目前在
AppName.Common
中托管网络,因为
AppName
需要它初始化,而
AppName.Game
需要它的某些类来存储基于它们的属性类

当我不能同时引用
AppName.Common
AppName.Game
时,就会出现问题。Common要求游戏的类知道在新数据包进入时调用什么,而游戏项目需要网络(Dotnety)为属性使用这些类


我不明白为什么微软会阻止双向引用,要达到你想要的目标似乎是一场斗争?有什么解决方法吗?

最简单、最好的方法是将两个项目都需要的代码移到一个他们都可以访问的地方,而无需循环引用。将另一个项目添加到解决方案中:

AppName.Networking

将两个项目所需的所有网络内容放入其中并引用。

听起来你把一些类放在了错误的项目中。你有两个潜在的行动方向:1。将类放在正确的项目中。2.启动一项活动,使Microsoft重新设计.NET更符合您的喜好。当这个项目需要发布的时候,你有一个特定的十年吗?如果你到了需要引用“双向”的时候,那么你在某个地方出了问题。试着把它想象成是为了保护你免于糟糕的设计决策这是你的解决方案设计的问题,而不是微软的框架设计“很多”?在我正在处理的一个项目中,我有超过45个程序集。“我不明白为什么Microsoft会阻止双向引用”-如果项目a引用了项目B,那么项目B必须在项目a之前生成,以便能够查看正在引用的内容。如果在两个方向上都引用了它们,那么现在需要首先构建它们(由于被另一个引用),这根本不起作用。当你在设计语言时,也许有一些方法可以绕过这个问题,但是微软采取了一种合理的方法,就是说不。