2009-12-22 43 views
1

我得到一个错误:StructureMap错误202设置IOC容器

StructureMap异常代码:202 为PluginFamily MVCPoco.Services.IService,MVCPoco.Services,版本= 1.0.0.0,文化定义没有默认实例=中性,在管线98

任何想法发生公钥=空

Line 96:   { 
Line 97:    Type controllerType = base.GetControllerType(context, controllerName); 
Line 98:    return ObjectFactory.GetInstance(controllerType) as IController; 
Line 99:   } 
Line 100: } 

错误? 我正在使用Visual Studio 2010附带的asp.net mvc 2 preview 2。

+0

私有静态无效InitializeStructureMap(IInitializationExpression X) { x.Scan(Y => { ÿ .Assembly( “MVCPoco.Core”); y.Assembly( “MVCPoco.Data”); y.With (); }); 我正在使用该代码来使用默认的名称约定...... 也许我做错了什么。 – Diego 2009-12-22 13:19:17

+0

我使用SM 2.5.2 这些方法的NOE不存在于我的当前上下文 x.For ()。使用(); (新的SingleImplementationScanner()); – Diego 2009-12-22 14:14:54

回答

0

您必须在ObjectFactory.Configure函数内注册在应用程序启动时注入的类型。在Structure Map的网站上查看配置您的IOC容器的文档。

安德鲁

1

你试图实例化控制器对IService构造函数依赖。您必须确保在配置StructureMap时注册IService的具体实现。 DefaultConventionScanner只会注册与其界面具有相同名称的实现(不含领先的I)。所以,除非您的IService的实施被命名为Service,否则它不会被自动注册。要明确地注册,添加这样的事情你inititalization脚本:

x.For<IService>().Use<MyService>(); 

另外,如果你是从最新的源代码运行StructureMap,你可以使用SingleImplementationScanner在您的扫描()的表达:

y.With(new SingleImplementationScanner()); 

,如果他们是在扫描码接口的唯一实现,无论名称会自动注册的具体类型。

0

好,我已经设置了正确的structuremap我刚切换到方法

public static void Configure() 
     { 
      ObjectFactory.Initialize(x => 

      x.AddRegistry(new IOCRegistry())); // in here i have registered my dependencies with for method. 

     }