Проблема реализации простой конфигурации StructureMap - PullRequest
0 голосов
/ 11 октября 2010

Я только начал копаться в StructureMap и столкнулся с некоторыми проблемами при запуске и запуске моей конфигурации.Кажется, что когда я пытаюсь зарегистрировать плагины в их соответствующих PluginFamily, они не обнаруживаются StructureMap.Я просмотрел много примеров в Интернете, но, похоже, не вижу, где я ошибаюсь.

Может ли другой взгляд увидеть, в чем моя проблема?

Большое вам спасибоза ваше время.

- Чарли

<configuration>

 <configSections>
   <section name="StructureMap"
            type="StructureMap.Configuration.StructureMapConfigurationSection, StructureMap"/>
 </configSections >

 <StructureMap>

   <Assembly Name="Domain.Model" />

   <!-- ICustomField -->
   <PluginFamily Type="Domain.Model.CustomFields.ICustomField"
                 Assembly="Domain.Model"
                 DefaultKey="String">

     <Plugin Type="Domain.Model.CustomFields.StringCustomField"
             Assembly="Domain.Model"
             ConcreteKey="String" />

     <Plugin Type="Domain.Model.CustomFields.DateTimeCustomField"
             Assembly="Domain.Model"
             ConcreteKey="DateTime" />

     <Plugin Type="Domain.Model.CustomFields.BooleanCustomField"
             Assembly="Domain.Model"
             ConcreteKey="Boolean" />

     <Plugin Type="Domain.Model.CustomFields.IntegerCustomField"
             Assembly="Domain.Model"
             ConcreteKey="Integer" />

     <Plugin Type="Domain.Model.CustomFields.DecimalCustomField"
             Assembly="Domain.Model"
             ConcreteKey="Decimal" />

   </PluginFamily>

 </StructureMap>

</configuration>


[TestFixture]
public class BooleanCustomFieldTest
{
       [SetUp]
       public void SetUp()
       {
               log4net.Config.XmlConfigurator.Configure();

               ObjectFactory.Initialize(x =>
                               {
                                   x.PullConfigurationFromAppConfig = true;
                               });
       }

       [Test]
       public void StructureMapCanCreateAnInstanceOfBooleanCustomField()
       {
               ICustomField field =
ObjectFactory.GetNamedInstance<ICustomField>("Boolean");

               Assert.IsNotNull(field);
               Assert.IsInstanceOf<BooleanCustomField>(field);
       }
}

1 Ответ

1 голос
/ 15 октября 2010

Чарли, я взял предоставленный вами код / ​​конфиг (мне пришлось вручную создавать экземпляры ICustomField и последующие конкретные типы, поскольку вы не указали их в примере кода)

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

Поставленный тест проходит для всех пользовательских типов полей в примере, который я построил.

Одна вещь, которую вы можете попробовать, это ObjectFactory.WhatDoIHave (), котораяпокажет вам все зарегистрированные типы в контейнере.

Если вы хотите, чтобы я отправил вам рабочий пример вашего кода, чтобы увидеть, есть ли другие различия, дайте мне крик.

Кстати - я использовал 2.6.2.160 прямо с сервера сборки команды city.

...