在.NET BCL中有以下循环引用:
System.dll 和 System.Xml.dllSystem.dll 和 System.Configuration.dllSystem.Xml.dll 和 System.Configuration.dll这是.NET Reflector的截图,显示了我的意思:

微软如何创建这些程序集对我来说是一个谜.是否需要特殊的编译过程才允许这样做?我想象这里有一些有趣的东西.
我有一个解决方案,我有(超过)2个项目.
第一个项目有一个项目引用第二个项目.第二个项目没有第一个项目的参考.
好吧,在第一个项目中,我定义了一个可继承的类类型,我希望第二个项目中的某些类继承它.
显然,如果我想继承第一个项目中定义的类型,在第二个项目中我需要向第一个项目添加项目引用,以便能够看到类型并继续.
问题是,当我尝试添加项目引用时,我收到此错误消息:
有人可以用其他简单的单词解释我(也许在代码的例子中也隐含在错误中)什么是循环依赖?,最重要的是:我能做些什么来解决它?(请在回答之前阅读我研究的最后一部分).
这是我第一次听到" 循环依赖 "一词; 我从MSDN上读过这篇文章,但我什么都不懂.
无论如何,我看到很多像这样的循环依赖的问题,从我在那个问题中看到的看来,循环依赖意味着两个项目不能同时引用它们,这两个项目中只有一个可以引用另一个; 并且在那个问题中回答的所有人都说" 重新设计是解决方案 "或" 循环依赖不是好的做法 ",但是,在我的案例中重新设计将意味着在两个项目中定义相同的类型,我认为这也不是好的做法,当然,建立一个额外的程序集/项目只是为了存储一个类型来引用两个项目中的程序集......这是我认为最糟糕的想法.
可以说我有一个C#类
namespace CSharp;
using FSharp;
class Point
{
public double[] coords;
double MyX
{
get
{
return FSharp.MyX(this);
}
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个返回坐标的F#方法
namespace FSharp
open CSharp
let MyX (x : CSharp.Point) = x.coords.item 0
Run Code Online (Sandbox Code Playgroud)
这可能会很好,但它循环引用,因为它有2个独立的项目(在1个解决方案中).如果他们被视为同一个项目就不会有问题,但是VS不让我这样做,就我而言,你不能在1个项目中使用2种编码语言.至少我没有找到办法做到这一点.
我的问题是,如何完成这样的事情?