Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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# 4.0 C#从类库中的类访问WinForms项目中的类_C# 4.0 - Fatal编程技术网

C# 4.0 C#从类库中的类访问WinForms项目中的类

C# 4.0 C#从类库中的类访问WinForms项目中的类,c#-4.0,C# 4.0,我在一个解决方案中有两个c#项目 第一个项目是一个包含多个类的winforms项目,称为QuantumGUI。第二个项目是一个包含多个类的类库项目,称为QuantumDAL 我的目标是从QuantumDAL中的类访问和设置QuantumGUI类或Form.cs中的变量。 我已尝试在QuantumDAL项目中添加对QuantumGUI的引用,但收到以下错误:“无法添加对“QuantumGUI”的引用。将项目添加为引用将导致循环依赖关系”。 我在尝试添加项目依赖项时收到了类似的错误消息。仔细想想,错

我在一个解决方案中有两个c#项目

第一个项目是一个包含多个类的
winforms
项目,称为
QuantumGUI
。第二个项目是一个包含多个类的
类库
项目,称为
QuantumDAL

我的目标是从QuantumDAL中的类访问和设置QuantumGUI类或Form.cs中的变量。 我已尝试在QuantumDAL项目中添加对QuantumGUI的引用,但收到以下错误:
“无法添加对“QuantumGUI”的引用。将项目添加为引用将导致循环依赖关系”。

我在尝试添加项目依赖项时收到了类似的错误消息。仔细想想,错误消息是有道理的。 我试过其他的,我认为可能的方法,但是空了。我相信一定有一个聪明的方法来完成这件事。
如果我用一种错误的方法来处理这个问题,有没有一种方法可以让两个项目中的代码都可以访问“全局”类?
感谢您抽出时间查看此内容。

您尝试执行的操作存在两个问题:

首先,IDE警告您,您将创建一个循环依赖项。这意味着编译器需要先构建项目A,然后才能构建项目B,但需要先构建项目B,然后才能构建项目A。两个项目都不能“先”进行

第二个问题是WinForms项目很可能是一个可执行文件,您无法通过IDE添加对
*.exe
文件的引用。您可以通过命令行添加这些引用,但是VisualStudio试图阻止您这样做的事实应该表明这是一个非常糟糕的主意


正确的方法是将公共类重构为从其他两个项目引用的第三个类库。如果需要,您可以连接事件(特别是查看接口及其事件),以便在情况发生变化时通知感兴趣的观察者对象。

您提出的建议听起来像是糟糕的设计。一般来说,每一层应该只知道它下面的层,反之亦然。GUI应该请求值,或者注册事件处理程序以接收更新的信息。为什么类库要将自己绑定到特定的UI?