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实现一个简单的全局过滤查询