Gre*_*reg 7 c# aspnet-compiler asp.net-core
在编码时,出现了差异.通常在编写简单方法或构造函数时,我经常使用表达体技术.但是,当我生成以下内容时:
public class Sample : ISample
{
private readonly IConfigurationRoot configuration;
public Sample(IConfigurationRoot configuration) => this.configuration = configuration;
}
Run Code Online (Sandbox Code Playgroud)
代码似乎是有效的,Visual Studio和编译都工作.问题虽然来自同一个类,我去使用configuration变量.它产生"字段初始值设定项不能引用非静态字段初始值设定项".
产生的语法用法:
var example = configuration.GetSection("Settings:Key").Value;
Run Code Online (Sandbox Code Playgroud)
但是,如果我将片段留在此上方并修改为块体.Visual Studio不再吓坏了,为什么表达体会导致如此特殊的错误?块体与上面的片段一起正常工作吗?
public class Sample : ISample
{
private readonly IConfigurationRoot configuration;
public Sample(IConfigurationRoot configuration)
{
this.configuration = configuration;
}
}
Run Code Online (Sandbox Code Playgroud)
public class ApplicationProvider
{
public IConfigurationRoot Configuration { get; } = CreateConfiguration();
public IServiceProvider BuildProvider()
{
var services = new ServiceCollection();
DependencyRegistration(services);
return services.AddLogging().BuildServiceProvider();
}
private IConfigurationRoot CreateConfiguration() => new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
private void DependencyRegistration(this IServiceCollection services)
{
services.AddSingleton(_ => Configuration);
// All other dependency registration would also go here.
}
}
public static IServiceProvider ServiceProvider { get; } = new ApplicationProvider().BuildProvider();
Run Code Online (Sandbox Code Playgroud)
我会有一个类的接口,然后从提供程序中拉出来实例化.
ISample sample = ServiceProvider.GetServices<ISample>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1328 次 |
| 最近记录: |