如何使用来自不同项目的类

本文关键字:项目 何使用 | 更新日期: 2023-09-27 18:01:47

IDE: VS 2010, c# .net,

我在一个解决方案中有两个win项目,

ProjA和ProjB

现在ProjA包含classA.cs

namespace ProjA
{
    class ClassA
    {
        public static int aValue = 5;
    }
}

与ProjB包含classb相同。cs

namespace ProjB
{
    public class ClassB
    {
        public static int bValue = 10;  
    }
}

这里是FormA.cs

using System;
using System.Windows.Forms;
using ProjB;
namespace ProjA
{
    public partial class FormA : Form
    {
        public FormA()
        {
            InitializeComponent();
        }
        private void FormA_Load(object sender, EventArgs e)
        {
            int va = ProjB.ClassB.bValue;; //Here getting error.???
        }
    }
}

错误:无法解析符号ProjB

提示:这个问题与命名空间有关,我试图从ProjA中的FormA访问ProjB中的ClassB,这里ProjA和ProjB是相同解决方案中的2个winforms项目

- xxxx ----------- 这个问题已经解决了。

但现在我想在FormB.cs中访问ClassA.cs(正好与上述问题相反),

当我尝试同样的方式ProjB(右击)->添加参考-> ProjName(Tab) ProjA(点击)

我面临的新问题是它说无法添加它将创建循环依赖,请建议如何解决这个问题

我想访问ClassA.cs在ProjB->FormB.cs这里FormB在ProjB

如何使用来自不同项目的类

您需要创建新的类实例或将其设置为静态。所以这:

 namespace ProjB
{
public static class ClassB
{
  public static int bValue = 10;  
}

int va = ClassB.bValue; 

int va = new ClassB().bValue; 

ProjB是名称空间,因此它不知道使用哪个类。如果它们在相同的解决方案(项目包)中,只需使用类名ClassB(或ProjB.ClassB.bValue)

如果您的项目不在同一个解决方案中,请转到项目A,文件->添加->现有项目,并添加ProjB。

如果您已经正确引用了ProjB,则只需在ProjA中安装classB:

using System;
    using System.Windows.Forms;
    using ProjB;
    namespace ProjA
    {
         ProjB.ClassB classb=new ProjB.ClassB();
        public FormA()
        {
            InitializeComponent();
            ....
           classb.bValue=....//set desired valued
        }
        private void FormA_Load(object sender, EventArgs e)
        {
            int va =classb.bValue;
        }

问题在于引用,

我添加了参考

右键单击ProjA -> References -> Add Reference,然后添加ProjB。

问题解决。: -)

在你的visual studio

1-)右键单击您的解决方案

2-)然后打开解决方案的属性…

在属性页的左边,你会看到菜单…

3-)点击项目依赖项

在项目依赖项的详细信息(页面右侧)

4-)从带有"Project"标签的下拉列表中选择项目A

5-)在下拉列表复选框下(标记为选中)项目b

6-)点击保存/ok

你所做的操作警告编译器:

"当你开始构建ProjectA时,在构建/编译ProjectA之前,首先构建/编译ProjectA,然后继续构建ProjectA"

或者用另一种说法"亲爱的编译器!当你使用我的ProjectA时,你将需要my ProjectB来完成你的工作。所以也请检查我的ProjectB。

致以最诚挚的问候,你可爱的开发者"

注意:永远不要循环引用(ProjectA依赖于ProjectB和ProjectB依赖于ProjectA)彼此,这将导致编译代码的无限递归错误。

VS2010-ProjectDependencies框的可视化表示