Я использую 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, я могу указать только один параметр примитивного типа, который будет вставлен в конструктор службы, но не более того. Я не могу использовать фабричный делегат и другие подобные подходы, так как я не знаю подробностей о типе службы.
Есть ли способ реализовать этот сценарий?
Обновлять
Я решил эту проблему, используя дочерние области.
Некоторые пояснения
Мой первоначальный пример был не совсем правильным. На самом деле параметры имеют разные типы, поэтому нет двусмысленности.
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);
}