如何使用来自不同项目的类
本文关键字:项目 何使用 | 更新日期: 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框的可视化表示