C#
 Computer >> コンピューター >  >> プログラミング >> C#

どうすればサービスの依存関係をコントローラーC#Asp.net Coreに注入できますか?


ASP.NET Coreは、組み込みのIoCコンテナーを使用して、コンストラクターまたはメソッドを介して依存関係クラスのオブジェクトを挿入します。

組み込みコンテナーは、デフォルトでコンストラクターインジェクションをサポートするIServiceProvider実装によって表されます。組み込みのIoCcontainerによって管理されるタイプ(クラス)はサービスと呼ばれます。

IoCコンテナがアプリケーションサービスを自動的に挿入できるようにするには、最初にそれらをIoCコンテナに登録する必要があります。

public interface ILog{
   void info(string str);
}
class MyConsoleLogger : ILog{
   public void info(string str){
      Console.WriteLine(str);
   }
}

ASP.NET Coreを使用すると、StartupクラスのConfigureServicesメソッドでアプリケーションサービスをIoCコンテナーに登録できます。 ConfigureServicesメソッドには、アプリケーションサービスの登録に使用されるIServiceCollectionタイプのパラメーターが含まれています

以下に示すように、ConfigureServices()メソッドのIoCコンテナにILogを登録します。

public class Startup{
   public void ConfigureServices(IServiceCollection services){
      services.AddSingleton<ILog, MyConsoleLogger>();
   }
}

IServiceCollectionインスタンスのAdd()メソッドは、サービスをIoCcontainerに登録するために使用されます

ILogをサービスタイプとして指定し、MyConsoleLoggerをインスタンスとして指定しましたこれによりILogサービスがシングルトンとして登録されますNow、IoCコンテナはMyConsoleLoggerクラスのシングルトンオブジェクトを作成し、アプリケーション全体でコンストラクターまたはメソッドパラメーターとしてILogを含める場合は常にクラスのコンストラクターに挿入します。


  1. C#ASP.NET WebAPIでアクションメソッドにエイリアス名を割り当てるにはどうすればよいですか?

    コントローラのパブリックメソッドは、アクションメソッドと呼ばれます。 DemoControllerクラスがApiControllerから派生し、名前がGet、Post、PutandDeleteなどのHTTP動詞と一致する複数のアクションメソッドを含む例を考えてみましょう。 例 public class DemoController : ApiController{    public IHttpActionResult Get(){       //Some Operation       return Ok();

  2. C#ASP.NET WebAPIでのコントローラーアクションのさまざまな戻り値の種類は何ですか?

    Web APIアクションメソッドは、次のリターンタイプを持つことができます。 ボイド プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 無効 − すべてのアクションメソッドが何かを返す必要はありません。ボイドリターンタイプにすることができます。 例 using DemoWebApplication.Models using System.Web.Http; namespace DemoWebApplication.Controllers{    public class DemoCont