我有一些项目的解决方案。其中一个项目是我定义为main的项目,他的班级也有一个主要方法。
在这个类中,我已经定义了一些属性public和static。我想要的是从其他项目文件访问此属性。例如:
项目A:
namespace Cobra
{
public static class Program
{
public static int A;
public static int B;
...
项目B:
namespace Net
{
public class HttpHandler : IHttpHandler
{
...
public void ProcessRequest()
int a =Cobra.Program.A;
int b =Cobra.Program.B;
...
我该怎么做?
修改
如果我在项目B 中添加项目A 作为参考:“添加此项目作为参考,则会出现循环依赖关系。”
项目B 包含一些其他文件,因此需要在项目A 中引用项目B 。
答案 0 :(得分:6)
在项目B中,添加对项目A的引用,并向项目B添加using Cobra
语句,只要您想从Cobra(项目A)名称空间访问某些内容。
答案 1 :(得分:3)
您需要将项目A的引用添加到项目B - 右键单击解决方案资源管理器中的项目节点,选择引用,然后选择项目,然后选择项目A.
然后,您将可以访问项目A中的所有类型。
请参阅MSDN上的this How To。
答案 2 :(得分:3)
基于您对其他答案的评论,听起来您的问题实际上是您有一个循环依赖,您需要打破。通常,这样做的方法是分解界面并将其放在第三个项目中,其他项目都可以引用,而不是
class Foo //foo lives in project 1 (depends on project 2)
{
public Bar GetNewBar()
{
return new Bar(this);
}
public void DoSomething(){}
}
public class Bar //bar lives in project 2 (depends on project 1 -- cant do this)
{
public Bar(Foo parent){}
}
你有
class Foo: IFoo //foo lives in project 1 (depends on project 2 and 3)
{
public Bar GetNewBar()
{
return new Bar(this);
}
public void DoSomething(){}
}
public class Bar //bar lives in project 2 (depends on project 3)
{
public Bar(IFoo parent){}
}
public interface IFoo //IFoo lives in project 3 (depends on nothing)
{
void DoSomething();
}
答案 3 :(得分:1)
@Manu,
通过反思是可能的。以下是您的问题的解决方案。
您已创建了2个项目
项目B - 名称空间为“Net”,类为“HttpHandler”
项目A - 拥有名称空间“cobra”,静态类“程序”并参考项目B
现在您的问题是您需要访问项目B中的“程序”类而不将项目A引用到项目B,因为这样解决方案将不会构建,因为它将给出循环引用错误。
查看以下内容
项目A
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Net; namespace Cobra { public static class Program { public static int A { get; set; }//Getter/Setter is important else "GetProperties" will not be able to detect it public static int B { get; set; } static void Main(string[] args) { HttpHandler obj = new HttpHandler(); obj.ProcessRequest(typeof(Program)); } } }
项目B
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace Net { public class HttpHandler : IHttpHandler { public void ProcessRequest(Type cobraType) { int a, b; foreach (var item in cobraType.GetProperties(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)) { if (item.Name == "A") a = (int)item.GetValue(null, null);//Since it is a static class pass null else if (item.Name == "B") b = (int)item.GetValue(null, null); } } } }
希望这有一些帮助。
此致
萨马
答案 4 :(得分:0)
您需要在项目B的文件顶部添加using指令:
using Cobra;
在项目B中添加项目A作为参考。