У меня есть основное веб-приложение asp.net с несколькими параметрами в файле appSettings.json.
Я не хотел, чтобы в конструкторе были службы с IOptions<MyObject>
.
Я хотелMyObject в конструкторе.Поэтому я нашел следующую статью: https://weblog.west -wind.com / posts / 2017 / dec / 12 / easy-configuration-binding-in-aspnet-core-revisited , что очень интересно.
Но я хочу пойти дальше.Я хотел бы создать метод расширения для генерации инъекции.
Вот что я хотел бы сделать:
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Common.WebTools.Extensions
{
public static class IServiceCollectionExtensions
{
public static IServiceCollection AddSingletonConfigurationObject<T>(this IServiceCollection services,
IConfiguration configuration,
string appSettingsKey) where T:new()
{
var obj2 = new T();
configuration.Bind(appSettingsKey, obj);
services.AddSingleton(obj2); //compilation failed
return services;
}
}
}
А затем в моем методе ConfigureServices я могу вызвать
services.AddSingletonConfigurationObject<Common.Tools.Configuration.GoogleAnalyticsConfiguration>(Configuration, "GoogleAnalytics");
Но у меня есть ошибка компиляции в этой строке:
services.AddSingleton(obj2);
Кто-нибудь знает, как я могу исправить ошибку?