Reputation: 1477
Injection of configuration does not work within simple class (not inherited from PageModel
) where I keep my code
Despite this code:
private readonly IConfiguration _configuration;
public MyClass(IConfiguration configuration){
_configuration = configuration;
}
class once initialised as an object always asks for parameter configuration
, which shall be injected by framework. That is how it works for Razor Pages - classes inherited from PageModel
.
All configuration within Program.cs
and Startup.cs
are standard as where created by Visual Studio. I use Visual Studio 16.4.5 and ASP.NET Core 3.1.
How can I make this work?
Upvotes: 0
Views: 1243
Reputation: 3004
You could also try using the [inject]
attribute like so:
[Inject]
private IConfiguration Config { get; set; }
This should inject your IConfiguration into a property in your class.
Upvotes: 3
Reputation: 27588
If you inject IConfiguration
in custom class , you can register your class into DI so that it helps resovle dependency :
services.AddTransient<CustomClass>();
Then define instance in where you want to use custom class , for example , in index page :
private readonly ILogger<IndexModel> _logger;
private CustomClass _myClass;
public PrivacyModel(ILogger<IndexModel> logger, CustomClass myClass)
{
_logger = logger;
_myClass = myClass;
}
public void OnGet()
{
var connectString= _myClass.getConnectString();
}
Your class :
public class CustomClass
{
private IConfiguration _configuration;
public CustomClass(IConfiguration configuration) {
_configuration = configuration;
}
public string getConnectString() {
return _configuration.GetValue<string>("ConnectionStrings:DefaultConnection"); ;
}
}
Upvotes: 1