2017-05-15 8 views
0

私はstring rendering class i found onlineにHTMLビューを使用しようとしています。そのPDFRender atmは、これが何のために使用されるの原因と呼ばれる。私はDependency Injectionを使ってその設定をしたこと、そしてそれが箱の中でうまくいくはずだと言われました。依存関係注入を使用してクラスをインスタンス化します

どのようにインスタンス化するかわかりません。依存関係はコンストラクタを介して注入されるはずです。

私のクラスのコンストラクタは、この

 public PdfRender(IRazorViewEngine viewEngine, ITempDataProvider tempDataProvider, IServiceProvider serviceProvider) 
    { 
     _viewEngine = viewEngine; 
     _tempDataProvider = tempDataProvider; 
     _serviceProvider = serviceProvider; 

    } 

のように見えると私はこの

 // Set up Report PDF html renderer 
     services.AddScoped<PdfRender, PdfRender>(); 

今、私のコードでこれをしようとしてm個のようなスタートアップクラスConfigureMetod()でそれを設定(を見た後にリンクの例)

  PdfRender pdfRender; 
     string iWantToBetml = pdfRender.ModelToHTML(inspection); 

しかし、私は割り当てられていないVAを使用することはできませんライバル。私はDIがどのように使用されているのか分かりません。私の考えは、デフォルトのviewEngine、dataProvider、およびserviceProvidersを与えることです。

public PdfRender(PdfRender pdfRender, IRazorViewEngine viewEngine, ITempDataProvider tempDataProvider, IServiceProvider serviceProvider) 
    { 
    _pdfRender = pdfRender; 
    _viewEngine = viewEngine; 
    _tempDataProvider = tempDataProvider; 
    _serviceProvider = serviceProvider; 
    } 

は、その後、あなたのコントローラであること、そのコントローラ上のインスタンスメソッドで

public SomeMethod(){ 
     string iWantToBetml = _pdfRender.ModelToHTML(inspection); 
    } 

注で使用することができます。

+0

すべてのDI依存関係は、StarUp自体でservices.AddScoped ()のように定義する必要があります。あるいは、IServiceCollectionに拡張メソッドを記述し、StarUpでそのメソッドを呼び出すこともできます。 –

+0

"しかし、割り当てられていない変数を使用することができないというエラーが表示されます。"あなたの例は不完全です。すべての関連コードを投稿してください。 – Steven

答えて

0

あなたは自分のコントローラのコンストラクタにPdfRenderパラメータを追加する必要がありますコンストラクタでは、これらのパラメータをすべて指定する必要はなく、クラスが必要とするものを指定して、起動時にその型がDIコンテナに登録されていれば、DIコンテナから注入されます。

関連する問題