2011-12-21 52 views
0

我試圖用一個簡單的程序來嘗試基於配置的構造函數注入。下面是代碼:使用基於構造函數注入的簡單配置時的StructureMap錯誤

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> 

我不斷收到大量堆棧跟蹤讀取配置文件時,熬煮這個錯誤:

Trying to visit parameter test of type System.Boolean in the constructor for StructureMapConfig.Constructor, StructureMapConfig, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ---> StructureMap.StructureMapException: StructureMap Exception Code: 205 Missing requested Instance property "test" for InstanceKey "DefaultInstanceOfStructureMapConfig.IIConstructor, StructureMapConfig, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

代碼確實有一個名爲「test」的構造函數參數,目標類型是正確的 - 一個布爾值。

有人能給我指導我哪裏出錯了嗎?

-

注:我只想保持這種配置中,因爲它需要一個如果此值從重新編譯「假」到「真」,從而擊敗定義它的點在配置中。

回答

1

明白了,

"MementoStyle"應該是<StructureMap>元素上,而不是在<DefaultInstance>

相關問題