2017-11-21 6 views
7

ビジネスクラスでappsettings.jsonファイル(セクション:placeto)からプロパティのリストを読み込む必要がありますが、アクセスできませんでした。私はこれらの特性を公開する必要があります。.NETコア2のクラスからappsettings.jsonを読み取る

私はProgramクラスにファイルを追加します。これは

Class program

である私のappsettings.json

{ 
    "Logging": { 
    "IncludeScopes": false, 
    "LogLevel": { 
     "Default": "Warning" 
    } 
    }, 
    "placeto": { 
    "login": "fsdfsdfsfddfdfdfdf", 
    "trankey": "sdfsdfsdfsdfsdf" 
    } 
} 
+1

https://stackoverflow.com/questions/46632090/mvc-core-2-0-how-to-use-an-appsettings-json-file-via-configuration/46632521#46632521 – anserk

+0

の可能な複製MSからそれを説明する方法=> https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration – CodeNotFound

+0

しかし、私はカスタムクラスで読み込む必要があります、例はコントローラにあり、私は避難所ですいくつかのオプションを試しました。 .Net標準で使用されています。文字列userName = System.Configuration.ConfigurationManager.AppSettings ["PFUserName"]; '.Netコアの読み込みweb.configのために等価です@CodeNotFound –

答えて

2

まず:デフォルトを使用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(); 
} 

第二に、あなたのクラスのためのインタフェースを作成し、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"]; 
     } 
    } 
} 

は、その後、あなたのstartup.csに呼び出すことによって、あなたのクラスのDependency Injectionを実装:あなたのConfigureServices方法

services.AddSingleton< ITest, Test>(); 

を今すぐあなたもDependency Injectionで使用するすべてのクラスにクラスのインスタンスを渡すことができ

たとえば、あなたがExampleControllerにあなたのクラスを使用したい場合は、次のようにしてください:

private readonly ITest _test; 

    public ExampleController(
     ITest test 
    ) 
    { 
     _test = test; 

    } 

これで、コントローラの任意の場所にアクセスするための_testインスタンスが作成されました。

関連する問題