【发布时间】:2011-12-21 11:51:26
【问题描述】:
我尝试了一个简单的程序来尝试基于配置的构造函数注入。代码如下:
using StructureMap;
namespace StructureMapConfig
{
class Program
{
static void Main(string[] args)
{
ObjectFactory.Initialize(x =>
{
x.PullConfigurationFromAppConfig = true;
});
var result = ObjectFactory.GetInstance<IIConstructor>();
}
}
public interface IIConstructor
{
}
public class Constructor : IIConstructor
{
public Constructor(bool test)
{
}
}
}
这是我的配置文件:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="StructureMap"
type="StructureMap.Configuration.StructureMapConfigurationSection,StructureMap"/>
</configSections>
<StructureMap>
<DefaultInstance MementoStyle="Attribute"
PluginType="StructureMapConfig.IIConstructor,StructureMapConfig"
PluggedType="StructureMapConfig.Constructor,StructureMapConfig"
test="false"/>
</StructureMap>
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
读取配置文件时,我不断收到大量堆栈跟踪,最终导致此错误:
试图访问 System.Boolean 类型的参数测试 StructureMapConfig.Constructor、StructureMapConfig 的构造函数, 版本=1.0.0.0,文化=中性,PublicKeyToken=null ---> StructureMap.StructureMapException:StructureMap 异常代码:205 InstanceKey 缺少请求的实例属性“test” “DefaultInstanceOfStructureMapConfig.II 构造函数, StructureMapConfig,版本=1.0.0.0,文化=中性, PublicKeyToken=null
代码肯定有一个名为“test”的构造函数参数,并且目标类型是正确的 - 一个布尔值。
有人可以指导我哪里出错了吗?
--
注意:我只想将其保留在配置中,因为如果此值从“false”更改为“true”,则需要重新编译,因此无法在配置中定义它。
【问题讨论】:
标签: c# configuration dependency-injection structuremap