Внедрение непримитивных типов без их обертывания в интерфейсе в StructureMap

У меня есть простой реестр SM, в котором я настраиваю все свои экземпляры IDynamicValue. У меня есть некоторые аргументы конструктора, которые не являются примитивными типами (в моем случае DateTime и Predicate Of T). Есть ли способ, которым я могу ввести их, не помещая их в класс с интерфейсом (чтобы они могли быть подключены автоматически). Следующий фрагмент кода показывает, чего я хотел бы достичь:

ForRequestedType<IDynamicValue>().AddInstances(x =>
             {
                 x.OfConcreteType<DateTimeGenerator>().WithName("DateTime")
                     .WithCtorArg("keyName").EqualTo("DateTime")
                     .WithCtorArg("startDate").EqualTo(DateTime.Now.AddMonths(-1))
                     .WithCtorArg("minuteIntervalDelta").EqualTo(60);

             });

Этот пример выполняется, но не работает за исключением:

Код исключения StructureMap: 202 Экземпляр по умолчанию для PluginFamily System.DateTime не определен

Спасибо, Ник

РЕДАКТИРОВАТЬ:

Решение Фредди Риоса сработало идеально для того, что мне было нужно. Мне все еще любопытно, есть ли способ сделать это, если я автоматически подключаю некоторые аргументы конструктора (следовательно, не могу использовать ConstructedBy ())


person Nic Strong    schedule 16.03.2009    source источник


Ответы (1)


Если вы уже передаете все аргументы конструктору, вы можете вместо этого использовать ConstructedBy:

x.ConstructedBy(y => new DateTimeGenerator(
          "DateTime", DateTime.Now.AddMonths(-1), 60
         )
   ).WithName("DateTime");
person eglasius    schedule 16.03.2009