ビジネスクラスのappsettings.json
ファイル(セクション:placeto
)からプロパティのリストを読み取る必要がありますが、それらにアクセスできませんでした。これらのプロパティを公開する必要があります。
Program
クラスにファイルを追加します。
これは私のappsettings.json
です:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"placeto": {
"login": "fsdfsdfsfddfdfdfdf",
"trankey": "sdfsdfsdfsdfsdf"
}
}
最初:program.cs
のデフォルトを使用して、すでに構成を追加します:
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
Second:クラスのインターフェイスを作成し、Iconfiguration
フィールドを作成することにより、依存性注入で設定を渡します。
private readonly IConfiguration Configuration;
次に、コンストラクターで渡します。
public Test(IConfiguration configuration)
{
Configuration = configuration;
}
次に、Dependency Injection
を適切に使用するために、クラスのインターフェイスを作成します。その後、IConfiguration
を渡す必要なく、そのインスタンスを作成できます。
クラスとインターフェイスは次のとおりです。
using Microsoft.Extensions.Configuration;
namespace GetUserIdAsyncNullExample
{
public interface ITest { void Method(); }
public class Test : ITest
{
public Test(IConfiguration configuration)
{
Configuration = configuration;
}
private readonly IConfiguration Configuration;
public void Method()
{
string here = Configuration["placeto:login"];
}
}
}
Third:その後、startup.csで、次を呼び出してクラスの依存性注入を実装します。
services.AddSingleton< ITest, Test>();
ConfigureServices
メソッドで
これで、依存関係注入で使用されるクラスにもクラスインスタンスを渡すことができます。
たとえば、クラスを使用するExampleController
がある場合は、次を実行します。
private readonly ITest _test;
public ExampleController(ITest test)
{
_test = test;
}
これで、コントローラーのどこからでもアクセスできる_testインスタンスができました。