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

时间:2014-05-05 09:52:01

标签: c# .net winforms

IDE:VS 2010,C#.net,

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

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

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

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

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

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

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

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

5 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您需要创建类的新实例或使其成为静态。 所以这个:

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

然后

int va = ClassB.bValue; 

OR

int va = new ClassB().bValue; 

答案 2 :(得分:0)

如果您已正确引用ProjB,则只需在classB中设置ProjA

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;
        }

答案 3 :(得分:0)

问题在于参考,

我添加了参考

右键单击ProjA - >参考文献 - >添加参考,然后我添加了ProjB。

问题解决了。 : - )

答案 4 :(得分:0)

在您的视觉工作室

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

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

在属性页面的左侧,您将看到菜单..

3-)单击“项目依赖项”

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

4-)从DropDownList中选择项目A,其标签为“Project”

5-)在DropDownList检查(标记为已检查)项目B

6-)点击保存/确定

这个操作你做了什么,警告编译器:

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

或另一种说法 “亲爱的编译器! 当您使用我的ProjectA时,您需要My ProjectB才能正常工作。 所以请检查我的ProjectB。

最诚挚的问候,你可爱的开发者“

注意:永远不要循环引用(ProjectA依赖于ProjectB和ProjectB依赖于ProjectA)。这会导致编译代码的不确定递归错误..!

Visual Representation of The VS2010-ProjectDependencies Box