Я использую dryloc и хочу зарегистрировать сервис, который задан как неявный тип и может иметь конструктор (или может не иметь) с более чем одним параметром примитивных типов, например string или int
Я пыталсяследующее
var container = new Container();
Type serviceType; // some service type
Type serviceKey; // some serviceKey
var param1 = "some param1";
var param2 = "some param2";
container.Register(serviceType, Reuse.ScopedTo(serviceKey: serviceKey),
made: Parameters.Of.Type(_=> param1));
Используя этот API, я могу указать только один параметр типа примитива, который будет введен в конструктор службы, но не более. Я не могу использовать фабричный делегат и другие подобные подходы, так как я не знаю деталей о типе сервиса.
Есть ли способ реализовать этот сценарий?
Обновление
Iрешили эту проблему с помощью дочерних областей.
Некоторые пояснения
Мой первоначальный пример не был полностью верным. Фактически параметры имеют разные типы, поэтому нет никакой неоднозначности.
ServiceType может иметь конструктор, который требует param1 и param2 или может иметь конструктор, который не требует их
var container = new Container();
Type serviceType; // some service type
Type serviceKey; // some serviceKey
var param1 = "some param1";
var param2 = 5;
container.Register(serviceType, Reuse.ScopedTo(serviceKey: serviceKey));
////
// parent scope which is created outside
IResolverContext context;
object service = null;
using (var scope = context.OpenScope("my-child-scope"))
{
scope.UseInstance(param1);
scope.UseInstance(param2);
service = scope.Resolve(serviceType);
}