Как определить конструктора по умолчанию использованием кода StructureMap?

Способ взорвать ваш второй столбик и сохранить первый столбец эффективно flatMap:

ds.flatMap{ case A(a,b) => b.map((a,_)) }

должен выдать:

+---+---+
| _1| _2|
+---+---+
|  1|  A|
|  1|  B|
|  2|  C|
+---+---+
15
задан Cyril Bioley 18 August 2014 в 01:00
поделиться

3 ответа

Можно указать конструктора с ConstructedBy (). Попробуйте это:

ForRequestedType<MyDataContext>().TheDefault.
Is.ConstructedBy(() => new MyDataContext());

Это работало на меня.

30
ответ дан 1 December 2019 в 01:31
поделиться

Я не уверен, как / если это может быть сделано с быстрым интерфейсом / внутренний DSL. Можно ли однако использовать атрибут, если Вы не суетитесь о загрязнении Вашего домена?

Отметьте своего предпочтительного конструктора со значениями по умолчанию [DefaultConstructor] StructureMap самому жадному конструктору условно (конструктор с большинством параметров).

0
ответ дан 1 December 2019 в 01:31
поделиться

Я предполагаю, что вам также потребуется установить время жизни объекта (InstanceScope), если вы используете Linq2Sql. Я бы предложил использовать этот код, потому что он дает вам немного больше гибкости.

ForRequestedType< MyDataContext >()
            .CacheBy( InstanceScope.PerRequest )
            .TheDefault.Is.OfConcreteType< MyDataContext >()

SelectConstructor< MyDataContext >( () => new MyDataContext());

С помощью этого кода вы также можете дополнительно внедрить определения интерфейсов в конструктор MyDataContext, как это

SelectConstructor< MyDataContext >( () => new MyDataContext((IDatabaseFactory)null ));

Просто не забудьте определить конкретный тип с помощью StructureMap для вашего экземпляра IDatabaseFactory.

5
ответ дан 1 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: