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中
答案 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)。这会导致编译代码的不确定递归错误..!