App wide静态变量C#控制台应用程序

时间:2016-09-07 12:55:38

标签: c# .net dependency-injection console-application .net-core

我希望使用<script type="text/javascript"> $(document).ready(function() { $("select").searchable({ maxListSize: 100, maxMultiMatch: 50, exactMatch: false, wildcards: true, ignoreCase: true, latency: 200, warnMultiMatch: 'top {0} matches ...', warnNoMatch: 'no matches ...', zIndex: 'auto' }); }); 中实例化的变量<div class="form-group"> @Html.LabelFor(model => model.CustomerID, "CustomerID", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("CustomerID", null, htmlAttributes: new {@class = "form-control" }) @Html.ValidationMessageFor(model => model.CustomerID, "", new { @class = "text-danger" }) </div> </div> <div class="form-group"> @Html.LabelFor(model => model.VideoID, "VideoID", htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownList("VideoID", null, htmlAttributes: new { @class = "form-control" }) @Html.ValidationMessageFor(model => model.VideoID, "", new { @class = "text-danger" }) </div> </div> 能够在我拥有的其他类中使用。据我了解,我们需要使用依赖注入,但不知道如何实现。

Program.cs的

Config

TestClass.cs

Program.cs

2 个答案:

答案 0 :(得分:2)

您可以创建Config static public,因此可以在应用程序的任何位置访问它,或者,如果您想使用依赖注入,请让TestClass构造函数请求IConfigurationRoot

public TestClass(IConfigurationRoot config) 
{
    // do what you need
    // save a reference to it on a local member, for example
}

现在,每次实例化一个新的TestClass时,都必须通过参数将其将使用的IConfigurationRoot对象传递给它的构造函数。如果这证明是麻烦的(例如:你在许多不同的地方经常实例化TestClass),那么你可以使用TestClassFactory

public class TestClassFactory
{
    public TestClass Get()
    {
        // Do your logic here to get a new TestClass object
        // The IConfigurationRoot object that will be used to create TestClasses
        // will be chosen here.
    }
}

此外,如果您不想直接使用ASP.NET类型,您可以像Crowcoder所指出的那样创建一个配置存储库,就像对任何数据库模型一样。例如,该存储库将从json文件中获取配置。

这样的事情:

public class ConfigurationRepository : IConfigurationRepository
{
    public string GetBasePath()
    {
        // Read base path from config files
    }

    public string SetBasePath()
    {
        // Write base path to config files
    }
}

然后你会使用DI将IConfigurationRepository传递给TestClass

答案 1 :(得分:0)

如果Config被声明为public static,则可以从其他类访问Program.Config