[英]Converting block body method with out parameter to expression body method causes out parameter to be null
[英]Expression Body VS Block Body
在編碼時,出現了差異。 通常在編寫簡單方法或構造函數時,我經常使用表達體技術。 但是,當我生成以下內容時:
public class Sample : ISample
{
private readonly IConfigurationRoot configuration;
public Sample(IConfigurationRoot configuration) => this.configuration = configuration;
}
代碼似乎是有效的,Visual Studio和編譯都工作。 問題雖然來自同一個類,我去使用configuration
變量。 它產生“字段初始值設定項不能引用非靜態字段初始值設定項”。
產生的語法用法:
var example = configuration.GetSection("Settings:Key").Value;
但是,如果我將片段留在此上方並修改為塊體。 Visual Studio不再嚇壞了,為什么表達體會導致如此特殊的錯誤? 塊體與上面的片段一起正常工作嗎?
public class Sample : ISample
{
private readonly IConfigurationRoot configuration;
public Sample(IConfigurationRoot configuration)
{
this.configuration = configuration;
}
}
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();
我會有一個類的接口,然后從提供程序中拉出來實例化。
ISample sample = ServiceProvider.GetServices<ISample>();
public IConfigurationRoot Configuration { get; } = CreateConfiguration();
你沒有設置屬性,但你正試圖設置它? 這對我來說很奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.