클래스 파일에서 IHostingEnvironment를 사용하는 방법

케이시 크룩스턴

.NET 프레임 워크에서는 방금 Server.MapPath ()를 사용했을 것입니다. .NET Core 2.2에서는 IHostingEnvironment. 그러나 내가 찾을 수있는 모든 예는 컨트롤러에서 사용하고 있다고 가정하는 것 같습니다. 그리고이 예제는 컨트롤러에 IHostingEnvironment를 주입하는 것을 말합니다. 그러나...

제 경우에는 일부 * .json 파일을 데이터 저장소로 사용하고 있습니다. 여러 업스트림 위치에서 호출 할 수있는 독립적 인 데이터 액세스 클래스를 만들고 있습니다. 업스트림 호출자에게 영향을주지 않고 IHostingEnvironment를이 클래스에 주입하는 방법을 이해하고 있지 않습니다. 아이디어는 언젠가 .json 파일을 SQL 테이블로 교체하면 데이터 액세스 클래스 만 변경하고이를 호출하는 소스는 변경하지 않으려는 것입니다.

그렇다면 데이터 액세스 클래스에서 로컬 .json 파일에 대한 경로를 어떻게 매핑 할 수 있습니까?

namespace DataAccess
{
    public class Repository
    {
        private readonly string _connStringName;

        public Repository(string connStringName)
        {
            _connStringName = connStringName;
        }

        public IEnumerable<T> GetList<T>()
        {
            IEnumerable<T> entities;
            using (StreamReader r = new StreamReader(_connStringName)) // <---- ??
            {
                string json = r.ReadToEnd();
                entities = JsonConvert.DeserializeObject<List<T>>(json);
            }
            return entities;
        }
    }
}

이 줄 :

using (StreamReader r = new StreamReader(_connStringName))

내가 이해하는 IIS Express의 경로를 매핑하려고합니다. 그러나 파일의 상대 위치에 대한 경로를 매핑하는 데 필요합니다.

감사!

편집하다:

내가 잘못하고있는 것일까? 이것이 내가 본 예를 따르려고 노력한 방법입니다.

public class Repository
{

    private readonly string _connStringName;
    private IHostingEnvironment _hostingEnvironment;

    public Repository(string connStringName, IHostingEnvironment environment)
    {
        _connStringName = connStringName;
        _hostingEnvironment = environment;
    }

    // rest of the class
}

이렇게하면 Repository현재 인스턴스를 생성하는 모든 업스트림 위치가 'IHostingEnvironment'를 전달해야합니다.

편집 2 :

어떻게 Repository사용되고 있습니다.

public static class Customers
{
    private static readonly string _connStringName = "customer.json";

    public static string Get()
    {
        DataAccess.Repository repository = new DataAccess.Repository(_connStringName);
        List<Customer> customers = repository.GetList<Customer>().ToList();
        return JsonConvert.SerializeObject(customers);
    }
}
허버트 린

.NET Core에서 시작시 주입 할 종속성을 등록 할 수 있습니다.

이렇게하면 다음을 수행해야합니다.

  1. 주사 RepositoryCustomers.

  2. RepositoryStartup에서 종속성 전달

// Startup.cs
public class Startup
{
    // ...
    public void ConfigureServices(IServiceCollection services, IHostingEnvironment env)
    {
        // [2]
        var connectionString = "customer.json"; // or get from a config file
        services.AddSingleton<Repository>(new Repository(connectionString, env));
    }
    // ...
}

public class Customers
{
    private Repository _repository;
    public Customers(Repository repository)
    {
        // [1]
        _repository = repository;
    }
    public string Get()
    {
        // you can use _repository here without passing stuff in
    }
}

public class Repository
{
    private IHostingEnvironment _env;
    public Repository(string connectionString, IHostingEnvironment env)
    {
        _env = env;
    }
}

.NET Core 종속성 주입-https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore- 2.2

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

js 파일에서 firebase 클래스를 사용하는 방법

분류에서Dev

Vue 파일 내에서 내 클래스를 사용하는 방법

분류에서Dev

파일에서 클래스 정적 변수를 사용하는 방법

분류에서Dev

파일에서 클래스 정적 변수를 사용하는 방법

분류에서Dev

JS 파일 Titanium에서 app.tss 클래스를 사용하는 방법

분류에서Dev

C # 클래스 파일에서 클래스를 호출하는 방법

분류에서Dev

Java에서 스캐너 클래스를 사용하는 방법

분류에서Dev

PHP에서 스누피 클래스를 사용하는 방법

분류에서Dev

스칼라에서 클래스를 사용하는 방법

분류에서Dev

Parquet 파일에서 사용자 정의 클래스를 읽고 쓰는 방법

분류에서Dev

여러 클래스를 하나의 클래스로 사용하는 jquery에서 not selector를 사용하는 방법

분류에서Dev

동일한 클래스 Perl에서 클래스의 인스턴스를 사용하는 방법

분류에서Dev

Typescript 클래스에서 yield를 사용하는 방법

분류에서Dev

SASS 및 Angular에서 sudo 클래스를 사용하는 방법

분류에서Dev

DLL에서 내 보낸 클래스를 사용하는 방법

분류에서Dev

Codenameone Netbeans 7.4에서 URLImage 클래스를 사용하는 방법

분류에서Dev

Android에서 TextViewEx, (Textjustify) 클래스를 사용하는 방법

분류에서Dev

다른 클래스에서 변수를 사용하는 방법

분류에서Dev

별도의 클래스에서 getContentResolver ()를 사용하는 방법

분류에서Dev

여러 패널에서 클래스를 사용하는 방법

분류에서Dev

angular 내부에서 CSS 클래스를 사용하는 방법

분류에서Dev

angular 내부에서 CSS 클래스를 사용하는 방법

분류에서Dev

Puppet에서 클래스를 재사용하는 방법

분류에서Dev

클래스 내에서 mysqli_query를 사용하는 방법

분류에서Dev

클래스에서 구조체를 사용하는 방법

분류에서Dev

클래스에서 If를 사용하는 방법

분류에서Dev

PHP 변수를 사용하여 PHP에서 클래스 파일을 생성하는 방법

분류에서Dev

기본 클래스 메서드에서 파생 클래스 변수를 사용하는 방법

분류에서Dev

목록 파생 클래스에서 목록 이해를 사용하는 방법

Related 관련 기사

  1. 1

    js 파일에서 firebase 클래스를 사용하는 방법

  2. 2

    Vue 파일 내에서 내 클래스를 사용하는 방법

  3. 3

    파일에서 클래스 정적 변수를 사용하는 방법

  4. 4

    파일에서 클래스 정적 변수를 사용하는 방법

  5. 5

    JS 파일 Titanium에서 app.tss 클래스를 사용하는 방법

  6. 6

    C # 클래스 파일에서 클래스를 호출하는 방법

  7. 7

    Java에서 스캐너 클래스를 사용하는 방법

  8. 8

    PHP에서 스누피 클래스를 사용하는 방법

  9. 9

    스칼라에서 클래스를 사용하는 방법

  10. 10

    Parquet 파일에서 사용자 정의 클래스를 읽고 쓰는 방법

  11. 11

    여러 클래스를 하나의 클래스로 사용하는 jquery에서 not selector를 사용하는 방법

  12. 12

    동일한 클래스 Perl에서 클래스의 인스턴스를 사용하는 방법

  13. 13

    Typescript 클래스에서 yield를 사용하는 방법

  14. 14

    SASS 및 Angular에서 sudo 클래스를 사용하는 방법

  15. 15

    DLL에서 내 보낸 클래스를 사용하는 방법

  16. 16

    Codenameone Netbeans 7.4에서 URLImage 클래스를 사용하는 방법

  17. 17

    Android에서 TextViewEx, (Textjustify) 클래스를 사용하는 방법

  18. 18

    다른 클래스에서 변수를 사용하는 방법

  19. 19

    별도의 클래스에서 getContentResolver ()를 사용하는 방법

  20. 20

    여러 패널에서 클래스를 사용하는 방법

  21. 21

    angular 내부에서 CSS 클래스를 사용하는 방법

  22. 22

    angular 내부에서 CSS 클래스를 사용하는 방법

  23. 23

    Puppet에서 클래스를 재사용하는 방법

  24. 24

    클래스 내에서 mysqli_query를 사용하는 방법

  25. 25

    클래스에서 구조체를 사용하는 방법

  26. 26

    클래스에서 If를 사용하는 방법

  27. 27

    PHP 변수를 사용하여 PHP에서 클래스 파일을 생성하는 방법

  28. 28

    기본 클래스 메서드에서 파생 클래스 변수를 사용하는 방법

  29. 29

    목록 파생 클래스에서 목록 이해를 사용하는 방법

뜨겁다태그

보관