如何将变量从一个项目传递到另一个项目 C#

How to pass a variable from one project to another project C#

我的主项目 (mvc) 中有一个静态变量,我希望能够 pass/use 我的其他项目中的那个变量 (asp.net core 5.0 web api) 项目。我正在阅读有关如何执行此任务的信息,其中一种方法是使用我拥有的 static 变量。我读了这个 post 并且其中一个解决方案提到您可以通过调用第一个项目中第一个项目的名称空间来将第一个项目中的静态变量调用到另一个项目中。 但是,当我这样做时它不让我说它不存在。有办法做到这一点吗?

在 post 他们的例子是:

using System.Windows.Forms;

namespace Demo1
{
    public class Sample1
    {
        public static string x = "initial value of 'x";

        public void sampleFn1() {x = "value of 'x set in function";}
    }
}

namespace Demo2
{
    public class Sample2
    {
        public void sampleFn2(){MessageBox.Show(Demo1.Sample1.x);}
    }
}

对我来说,项目 1 是 CustomerApp,项目 2 是 Service.Api:

namespace CustomerApp.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        public static Guid uniqueId = Guid.NewGuid();

    }

}

然后在我的 ServiceApi 中,我尝试执行与 post 中的示例相同的操作,但是当我调用命名空间 CustomerApp 时,它没有给我将其引用到其他项目的任何选项。为了从 post?

中复制示例,是否需要使用特定的用法
namespace Service.API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        private readonly ILogger<ValuesController> _logger;

        public ValuesController(ILogger<ValuesController> logger)
        {
            _logger = logger;
        }

        // GET: api/<ValuesController>
        [HttpGet]
        [Route("sample")]
        public ActionResult Get()
        {
            _logger.LogInformation("Target method invoked.....{@CorrelationId}", CustomerApp.); // here I am trying to perform CustomerApp.Controllers.HomeController.uniqueId.ToString()
        }
    }
}

您需要确保在 Class 库 项目中定义了静态变量,并且 Web 项目引用了 Class 图书馆项目。

您的代码当前构造方式,看起来这两个项目都是 Web 项目(您的第一个项目提到了 HomeController)。尽可能避免这种类型的混合。将业务逻辑移动到 class 库中,并将 Web 逻辑保留在 Web 项目中。

首先,如果还没有,请将其添加到 HomeController class(使用 CustomerApp.Controllers.HomeController;)。您自己的示例与您引用的示例不匹配。在第一个示例中,静态变量在同一命名空间中的两个不同 classes 之间使用,但在您的示例中,您试图在不同的命名空间和不同的 classes 之间进行操作。 因此,如果您的服务在您的主项目中,您应该添加。

那么你就可以像下面这样使用了。

public ActionResult Get()
        {
            _logger.LogInformation("Target method invoked.....{@CorrelationId}", HomeController.uniqueId.ToString()); 
        }

我想你忘了将项目引用添加到要使用变量的目标项目, 像这样添加参考:

右键单击您的目标项目并select添加 > 项目参考

最后选择变量项目

这对你有帮助