ASP.Net Core 2.2 中的全局变量

Posted

技术标签:

【中文标题】ASP.Net Core 2.2 中的全局变量【英文标题】:Global Variables in ASP.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”相对应的参数

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

【问题讨论】:

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

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

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

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

【讨论】:

他正在尝试使用“new”创建 PropertySalesRepository 的实例。但是,PropertySalesRepository 有一个需要 MDUOptions 作为参数的构造函数。如果他已经按照链接答案中的说明进行操作,注入 PropertySalesRepository 应该可以解决这个问题。

以上是关于ASP.Net Core 2.2 中的全局变量的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 中的Ajax全局Antiforgery Token配置

使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目

ASP.NET Core 2.1 中的 Scaffold Identity UI 并添加全局过滤器

在ASP.NET Core中通过EF Core实现一个简单的全局过滤查询

asp.net core 3.0 MVC JSON 全局配置

ASP.NET Core 定时刷新第三方 Token