2013-10-16 37 views
0
  ObjectFactory.Initialize(x => 
      { 
       x.Scan(scan => 
       { 
        scan.Assembly("CloudAssembly"); // defines profile "Cloud" 
        scan.LookForRegistries(); 
       }); 

       x.Profile("Local", cfg => 
       { 
        cfg.For<ICloudStorage>(). 
         Use(() => 
          new LocalStorage(HttpContext.Current.Server.MapPath("~"))); 

       }); 
      }); 

然後我嘗試將其設置爲「本地」配置文件,以便ICloudStorage解析爲LocalStorage。使用配置文件的結構映射(版本2.6)

StructureMap Exception Code: 202 
No Default Instance defined for PluginFamily ICloudStorage, AssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

我做得不對的輪廓:

 ObjectFactory.Container.SetDefaultsToProfile("Local"); 
     ObjectFactory.Profile = "Local"; 

然後我激活取決於ICloudStorage對象時得到這個例外?我看了一下whatDoIHave的輸出,看起來一切正常。

這裏的「whatDoIHave」的相關部分:這讓我的初始化方法後直接調用使用的配置文件,而不是

ICloudStorage (MyLibrary.ICloudStorage)       Default Instance for Profile Local   Instance is created by Func<object> function: System.Func`2[StructureMap.IContext,MyLibrary.ICloudStorage]                               
Scoped as: Transient 

                        Default Instance for Profile Local   Instance is created by Func<object> function: System.Func`2[StructureMap.IContext,MyLibrary.ICloudStorage]                               
                        Default Instance for Profile Cloud  Configured Instance of CloudProviders.CloudStorage, CloudProviders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null 

回答

0

我只是去掉ObjectFactory.Container.SetDefaultsToProfile(「本地」).. 。

<StructureMap DefaultProfile="Local"> 

    </StructureMap> 

而且它現在能正常使用...