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 に解決されるようにします。

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

その後、ICloudStorage に依存するオブジェクトをアクティブ化すると、次の例外が発生します。

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

プロファイルに何か問題がありますか? 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  
4

1 に答える 1