我刚刚开始深入研究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);
}
}
答案 0 :(得分:1)
Charly,我接受了你提供的代码/配置(我必须手动创建ICustomField的实例以及后续的具体类型,因为你没有在示例代码中提供它们)
也许您可以提供模型/接口声明的代码?
测试提供了我构建的示例中所有自定义字段类型的传递。
您可能想要尝试的一件事是ObjectFactory.WhatDoIHave(),它将显示容器中的所有已注册类型。
如果您希望我向您发送代码的工作示例以查看是否存在其他差异,请给我一个大喊。
btw - 我直接从团队城市构建服务器使用2.6.2.160。