在项目之间共享变量

本文关键字:共享变量 之间 项目 | 更新日期: 2023-09-27 18:15:20

我对一些项目有一个解决方案。其中一个项目是我定义为main的,他的类也有一个main方法。

在这个类中,我定义了一些public和static属性。我想要的是从其他项目文件访问这个属性。例如:

项目一:

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

在项目之间共享变量

在项目B中,添加对项目a的引用,并在项目B中添加using Cobra语句,无论您想从Cobra(项目a)命名空间访问什么。

您需要将项目a的引用添加到项目B -右键单击解决方案资源管理器中的项目节点,选择引用,然后选择项目,然后选择项目a

您将可以访问项目a中的所有类型。

>

根据你对其他答案的评论,听起来你的问题真的是你有一个循环依赖,你需要打破。一般来说,方法是把一个接口提出来放到第三个项目中这样其他两个项目都可以引用它而不是

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

@Manu,

通过反射是可能的。以下是你的问题的解决方案。

你已经创建了2个项目

项目B——命名空间为"Net",类为"HttpHandler"

项目A——命名空间为"cobra",静态类为"Program",并引用项目B

现在你的问题是你需要在项目B中访问类"Program",而不给项目A对项目B的引用,因为这样解决方案将无法构建,因为它会给出循环引用错误。

查看以下

项目

<>之前使用系统;使用System.Collections.Generic;使用来;使用text;使用净;名称空间眼镜蛇{公共静态类{public static int A {get;设置;}//Getter/Setter很重要,否则"GetProperties"将无法检测到它public static int B {get;设置;}静态void Main(string[] args){HttpHandler obj = new HttpHandler();obj.ProcessRequest (typeof(程序));}}}之前

项目B

<>之前使用系统;使用System.Collections.Generic;使用来;使用text;使用System.Reflection;名称空间网{HttpHandler: IHttpHandler{公共void ProcessRequest(Type cobraType){Int a, b;在cobrtype . getproperties (BindingFlags.)Public | BindingFlags。静态| bindingflags .扁平化{如果项目。Name == "A")A = (int)项。GetValue(null, null);//因为它是一个静态类,所以传递nullif (item.)Name == "B")B = (int)item。GetValue(空,空);}}}}之前

希望对你有帮助。

问候,萨玛

你需要在项目B的文件顶部添加一个using指令:

using Cobra;

并在项目b中添加项目A作为参考。