【发布时间】:2011-02-04 08:10:32
【问题描述】:
容器的初始化:
public override void Initialize()
{
ObjectFactory.Initialize(x =>
{
x.Scan(s =>
{
s.TheCallingAssembly();
s.AssemblyContainingType<IRegistar>();
s.WithDefaultConventions();
});
});
}
Global.asax.xc
var dependencyContainer = new DependencyContainer();
dependencyContainer.Initialize();
ControllerBuilder.Current.SetControllerFactory(new DependencyControllerFactory());
Get 实例:
public class DependencyControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
return base.GetControllerInstance(requestContext, controllerType);
}
try
{
return ObjectFactory.GetInstance(controllerType) as Controller;
}
catch (StructureMapException exception)
{
Debug.WriteLine(ObjectFactory.WhatDoIHave());
throw;
}
}
}
控制者
私有IBabyRepository _babyRepository; {
public BabyController(IBabyRepository babyRepository)
{
_babyReposoitory = babyRepository;
}
类尝试 DI/Ioc
public class BabyRepository : IBabyRepository, IRepository<Baby>, IRegistar
{
Just a Default constructor here();
code...
}
错误:
结构图异常代码:202 没有为 PluginFamily Domain.Repository.IBabyRepository 定义默认实例,Domain,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null
我
我做错了什么?
【问题讨论】:
-
WhatDoIHave 输出是否显示为 IBabyRepository 注册的 BabyRepository?
-
另外,显示您尝试实例化的控制器的构造函数。
-
WhatDoIHave 是 StrcutMap objectfactory 容器的函数部分,它显示了哪些接口映射到了具体的接口
-
添加了控制器和构造函数
标签: c# asp.net-mvc-2 structuremap