2011-12-21 14 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) 
     { 

     } 
    } 
} 

私の設定ファイルされる:

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

:このエラーに煮詰め、設定ファイルを読み込むときに、私は大規模なスタックトレースを取得しておく

<?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> 

ここでは、コードです

コードには "test"というコンストラクター引数があり、宛先タイプは正しい - ブール値です。

私が間違っている場所について教えてもらえますか?

-

注:この値は、したがって、それを定義するポイントを破り、「真」と「偽」から変更された場合、それは再コンパイルが必要になりますように私は、構成のみでこれを維持したいです設定で。

答えて

1

"MementoStyle"

はない <DefaultInstance>

に、 <StructureMap>要素にする必要があり、それを手に入れました
関連する問題