Мне нужно создать экземпляр типа, который ДОЛЖЕН иметь параметр IConfiguration
, но МОЖЕТ иметь другие параметры.
В настоящее время я использую следующий код:
Activator.CreateInstance(myType, BindingFlags.CreateInstance, null, new object[] { configuration }, CultureInfo.InvariantCulture);
myType
- это тип для создания экземпляра. Написанный так, он требует конструктора, который имеет ровно один параметр типа IConfiguration
. Как видите, я передаю объект configuration
через массив объектов, чтобы удовлетворить это требование.
Теперь есть новое требование: конструктор myType
может иметь несколько параметров. Один из них должен принять объект IConfiguration
. Другие параметры могут быть проигнорированы (или установлены по умолчанию) в этой части кода. Как мне этого добиться?
Редактировать:
Это возможные типы для myType
. V1 - текущее требование, V2 - новое требование. Все три варианта действительны и должны быть созданы с помощью объекта configuration
.
public class PluginV1
{
private readonly IConfiguration configuration;
public PluginV1(IConfiguration configuration)
{
this.configuration = configuration;
}
}
public class PluginV2_A
{
private readonly IConfiguration configuration;
private readonly IExampleService exampleService;
public PluginV2_A(IConfiguration configuration, IExampleService exampleService)
{
this.configuration = configuration;
this.exampleService = exampleService;
}
}
public class PluginV2_B
{
private readonly IConfiguration configuration;
private readonly IEnvironment environment;
public PluginV2_B(IConfiguration configuration, IEnvironment environment)
{
this.configuration = configuration;
this.environment = environment;
}
}