【问题标题】:Global Variables in ASP.Net Core 2.2ASP.Net Core 2.2 中的全局变量
【发布时间】:2019-12-13 11:36:51
【问题描述】:

我正在尝试对一个已经提出的问题进行更多说明。因为我是新用户,所以我还不能评论(你必须有 50 声望才能评论)。

关于Global Variables in ASP.Net Core 2

@nurdyguy 认为“框架中内置的依赖注入将填充选项变量”。

var repo = new DB();

更多代码来演示问题:

    public class Secrets
    {
        public string ConnectionString { get; set; }
    }

    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            .
            .
            .

            System.Action<Secrets> opts = (opt =>
            {
                opt.ConnectionString = Configuration["ConnectionString"];
            });
            services.Configure(opts);
            services.AddSingleton(resolver => resolver.GetRequiredService<IOptions<Secrets>>().Value);
        }
    }

    public sealed class DB
    {
        private string _connectionString;

        public DB(Secrets secrets)
        {
            _connectionString = secrets.ConnectionString;
        }
    }

    public class testModel : PageModel
    {
        public void OnGet()
        {
            DB db = new DB();
        }
    }

当我尝试实例化该类时,我收到以下编译时错误:

错误 CS7036 没有给出与“DB(Secrets)”所需的形参“secrets”相对应的参数

我确定我正确地遵循了代码示例。他们是另一种实例化类的方式吗?

【问题讨论】:

  • 你读过stackoverflow.com/a/47464619/34092 吗?看看他们对IFileSystem 做了什么?您需要在此处执行此操作。
  • 谢谢@mjwills,提供的链接给了我一个有效的解决方案。我仍然完全不知道 DI 是如何工作的。非常感谢您对新用户的坚持和耐心。这是一个糟糕的问题,我敢肯定没有人会觉得有用,但我现在的日子肯定更好了。干杯????
  • 当您对某事不熟悉时,学习是困难的并且需要时间。没什么好羞愧的。很高兴听到该链接有帮助。

标签: c# asp.net-core razor-pages asp.net-core-2.2


【解决方案1】:

主要问题是您尝试使用 new 创建 PropertySalesRepository 的实例,该实例调用需要 MDUOptions 类型的 prop 的构造函数。

使用new 创建实例时,您不会获得具有注入属性的类。

要获得具有注入属性的类的实例,最简单的方法是将其注入到您的控制器中。

【讨论】:

  • 他正在尝试使用“new”创建 PropertySalesRepository 的实例。但是,PropertySalesRepository 有一个需要 MDUOptions 作为参数的构造函数。如果他已经按照链接答案中的说明进行操作,注入 PropertySalesRepository 应该可以解决这个问题。
猜你喜欢
  • 2019-03-10
  • 2018-01-07
  • 2019-11-07
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2018-09-12
  • 2015-05-24
  • 1970-01-01
相关资源
最近更新 更多