2017-11-21 27 views
7

Tôi cần đọc danh sách các thuộc tính từ appsettings.json tệp (phần: placeto) trong một lớp học kinh doanh, nhưng tôi không thể truy cập chúng. Tôi cần những tài sản này để được công khai.Đọc appsettings.json từ một lớp trong .NET Core 2

tôi thêm các tập tin trong lớp Program:

Class program

Đây là tôi appsettings.json:

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

Bản sao có thể có của https://stackoverflow.com/questions/46632090/mvc-core-2-0-how-to-use-an-appsettings-json-file-via-configuration/46632521#46632521 – anserk

+0

Tài liệu này từ MS giải thích nó làm thế nào để => https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration?tabs=basicconfiguration – CodeNotFound

+0

nhưng tôi cần đọc trong lớp tùy chỉnh, ví dụ là trong bộ điều khiển và tôi thiên đường đã thử một số tùy chọn. trong tiêu chuẩn .Net được sử dụng 'string userName = System.Configuration.ConfigurationManager.AppSettings [" PFUserName "];' để đọc web.config, trong .Net core tương đương @CodeNotFound –

Trả lời

2

Đầu tiên: Sử dụng program.cs mặc định nó đã bổ sung thêm cấu hình cho bạn:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     BuildWebHost(args).Run(); 
    } 

    public static IWebHost BuildWebHost(string[] args) => 
     WebHost.CreateDefaultBuilder(args) 
      .UseStartup<Startup>() 
      .Build(); 
} 

Thứ hai tạo ra một giao diện cho lớp học của bạn và vượt qua cấu hình với dependency injection bằng cách tạo Iconfiguration lĩnh vực:

private readonly IConfiguration Configuration; 

sau đó vượt qua nó bằng cách contructor:

public Test(IConfiguration configuration) 
{ 
    Configuration = configuration; 
} 

Tạo một giao diện cho lớp học của bạn để sử dụng Dependency Injection nên bạn có thể tạo các trường hợp của nó mà không cần phải vượt qua IConfiguration tới số

Đây là lớp và Giao diện:

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"]; 
     } 
    } 
} 

Sau đó, trong startup.cs của bạn thực hiện Dependency Injection cho lớp học của bạn bằng cách gọi:

services.AddSingleton< ITest, Test>(); 

trong phương pháp ConfigureServices bạn

bây giờ bạn có thể vượt qua trường lớp học của bạn cho bất kỳ lớp để sử dụng bằng cách Dependency Injection quá

ví dụ: nếu bạn có ExampleController mà bạn muốn sử dụng lớp học của mình, hãy thực hiện theo các bước sau:

private readonly ITest _test; 

    public ExampleController(
     ITest test 
    ) 
    { 
     _test = test; 

    } 

Và bây giờ bạn có thể hiện _test để truy cập nó ở bất cứ đâu trong bộ điều khiển của bạn.

Các vấn đề liên quan