1

StructureMapを使用して依存関係を解決しています。これは古いバージョンでは問題ありません。しかし、StructureMapバージョン4.2.0.40を更新した後、StructureMap:名前 'ObjectFactory'は現在のコンテキストに存在しません

ObjectFactoryは新しいバージョンで廃止されました。 これをロジックの下で修正して、これを更新バージョンに適合させるにはどうすればいいですか?

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType) 
     { 
      try 
      { 
       if ((requestContext == null) || (controllerType == null)) 
        return null; 

       return (Controller)ObjectFactory.GetInstance(controllerType); 
      } 
      catch (StructureMapException) 
      { 
       System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave()); 
       throw new Exception(ObjectFactory.WhatDoIHave()); 
      } 
     } 

Bootstrapper.cs

public static class Bootstrapper 
    { 
     public static void Run() 
     { 
      ControllerBuilder.Current 
       .SetControllerFactory(new StructureMapControllerFactory()); 

      ObjectFactory.Initialize(x => 
      { 
       x.AddConfigurationFromXmlFile(@"D:\Samples\Web_API\OneCode\StructureMap.Web\StructureMap.Web\StructureMap.xml"); 
      }); 
     } 
    } 
} 

答えて

2

あなたのような何か、ObjectFactoryの独自の実装を追加する必要があります:

public static class ObjectFactory 
{ 
    private static readonly Lazy<Container> _containerBuilder = 
     new Lazy<Container>(defaultContainer, LazyThreadSafetyMode.ExecutionAndPublication); 

    public static IContainer Container 
    { 
     get { return _containerBuilder.Value; } 
    } 

    private static Container defaultContainer() 
    { 
     return new Container(x => 
     { 
      // default config 
     }); 
    } 
} 

は、詳細はhereを参照してください。

また、以前のバージョンのStructureMapを使用して戻ることもできます。

関連する問題