{"id":19013,"date":"2022-11-05T02:45:43","date_gmt":"2022-11-04T21:15:43","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/"},"modified":"2022-11-05T02:45:43","modified_gmt":"2022-11-04T21:15:43","slug":"solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/","title":{"rendered":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-45566125\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"45566125\" data-parentid=\"45488368\" data-score=\"0\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Classes that are injected with dependencies usually don&#8217;t use the concrete classes (<code>UserManager.cs<\/code>) for their constructor parameters, but rely on interfaces e.g. <code>IUserManager<\/code>. Although it is possible to use concrete classes, an interface provides looser coupling which is the reason for using dependency injection in the first place.<\/p>\n<p>Whenever the framework encounters a constructor (in this case the constructor of the controller) that &#8220;wants&#8221; an interface it has too look up which concrete class it should use for injection.<\/p>\n<h1>Where<\/h1>\n<p>The relationship between &#8220;class wants type X&#8221; and &#8220;framework will inject it with type Y&#8221; is defined in the <code>ConfigureServices<\/code> method in <em>Startup.cs<\/em>.<\/p>\n<h1>What<\/h1>\n<h3>1. Decide on the lifetime of the created object<\/h3>\n<p>There are three options for defining the above relationship, that differ in the lifetime the object created by the dependency injection framework is alive.<\/p>\n<p>The <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/learn.microsoft.com\/en-us\/aspnet\/core\/fundamentals\/dependency-injection#service-lifetimes-and-registration-options\">official documentation<\/a> says:<\/p>\n<blockquote>\n<p><strong>Transient<\/strong><\/p>\n<p>Transient lifetime services are created each time they are requested.<br \/>\n  This lifetime works best for lightweight, stateless services.<\/p>\n<p><strong>Scoped<\/strong><\/p>\n<p>Scoped lifetime services are created once per request.<\/p>\n<p><strong>Singleton<\/strong><\/p>\n<p>Singleton lifetime services are created the first time they are<br \/>\n  requested (or when ConfigureServices is run if you specify an instance<br \/>\n  there) and then every subsequent request will use the same instance.<\/p>\n<\/blockquote>\n<h3>2. Add the code<\/h3>\n<p>After choosing a lifetime (scoped in the following examples) you add the line<\/p>\n<pre><code>services.AddScoped&lt;IInterfaceUsedByControllerParameter, ClassThatWillBeInjected&gt;();\n<\/code><\/pre>\n<p>or for OPs class<\/p>\n<pre><code>services.AddScoped&lt;IUserManager, UserManager&gt;();\n<\/code><\/pre>\n<p>or if <code>UserManager<\/code> implements several interfaces:<\/p>\n<pre><code>services.AddScoped&lt;ILogin, UserManager&gt;();\nservices.AddScoped&lt;IRegister, UserManager&gt;();\n<\/code><\/pre>\n<p>With those two lines whenever a class requires a constructor parameter with either of those two interfaces the dependency injection will provide it with an object of type <code>UserManager<\/code>.<\/p>\n<h1>Code examples<\/h1>\n<p>In case of the last example where <code>UserManager<\/code> implements the interfaces <code>ILogin<\/code> and <code>IRegister<\/code>:<\/p>\n<h3>Controler<\/h3>\n<pre><code>public class UserController : Controller\n    {\n        private readonly ILogin    _login;\n        private readonly IRegister _registration;\n\n        public UserController(ILogin login, IRegister registration)\n        {\n            _login = login;\n            _registration = registration;\n        }\n...\n...\n}\n<\/code><\/pre>\n<h3>Startup.cs<\/h3>\n<pre><code> public void ConfigureServices(IServiceCollection services)\n        {\n            ...\n            services.AddScoped&lt;ILogin, UserManager&gt;();\n            services.AddScoped&lt;IRegister, UserManager&gt;();\n            ...\n            services.AddMvc();\n            ...\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How do I inject my own classes into controllers in ASP.NET MVC Core? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Classes that are injected with dependencies usually don&#8217;t use the concrete classes (UserManager.cs) for their constructor parameters, but rely on interfaces e.g. IUserManager. Although it is possible to use concrete classes, an interface provides looser coupling which is the reason for using dependency injection in the first place. Whenever the framework encounters a constructor &#8230; <a title=\"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\" aria-label=\"More on [Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[4560,4559,324,3145],"class_list":["post-19013","post","type-post","status-publish","format-standard","hentry","category-solved","tag-asp-net-core-1-1","tag-asp-net-core-mvc","tag-c","tag-dependency-injection"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Classes that are injected with dependencies usually don&#8217;t use the concrete classes (UserManager.cs) for their constructor parameters, but rely on interfaces e.g. IUserManager. Although it is possible to use concrete classes, an interface provides looser coupling which is the reason for using dependency injection in the first place. Whenever the framework encounters a constructor ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-04T21:15:43+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?\",\"datePublished\":\"2022-11-04T21:15:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\"},\"wordCount\":302,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"asp.net-core-1.1\",\"asp.net-core-mvc\",\"c++\",\"dependency-injection\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\",\"name\":\"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-04T21:15:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb","og_description":"[ad_1] Classes that are injected with dependencies usually don&#8217;t use the concrete classes (UserManager.cs) for their constructor parameters, but rely on interfaces e.g. IUserManager. Although it is possible to use concrete classes, an interface provides looser coupling which is the reason for using dependency injection in the first place. Whenever the framework encounters a constructor ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/","og_site_name":"JassWeb","article_published_time":"2022-11-04T21:15:43+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?","datePublished":"2022-11-04T21:15:43+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/"},"wordCount":302,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["asp.net-core-1.1","asp.net-core-mvc","c++","dependency-injection"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/","url":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/","name":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-04T21:15:43+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-do-i-inject-my-own-classes-into-controllers-in-asp-net-mvc-core\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How do I inject my own classes into controllers in ASP.NET MVC Core?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=19013"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19013\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=19013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=19013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=19013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}