实现简单StructureMap配置的问题

时间:2010-10-11 19:26:25

标签: c# structuremap

我刚刚开始深入研究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 个答案:

答案 0 :(得分:1)

Charly,我接受了你提供的代码/配置(我必须手动创建ICustomField的实例以及后续的具体类型,因为你没有在示例代码中提供它们)

也许您可以提供模型/接口声明的代码?

测试提供了我构建的示例中所有自定义字段类型的传递。

您可能想要尝试的一件事是ObjectFactory.WhatDoIHave(),它将显示容器中的所有已注册类型。

如果您希望我向您发送代码的工作示例以查看是否存在其他差异,请给我一个大喊。

btw - 我直接从团队城市构建服务器使用2.6.2.160。