在 Global.asax 文件中,我有以下代码。
config.DependencyResolver = new IoCContainer(unity);
在 IOCContainer 中,它显示为“找不到命名空间”。我们应该在这里包含什么命名空间。我已经包含了 Microsoft.Practices.Unity。
在 Global.asax 文件中,我有以下代码。
config.DependencyResolver = new IoCContainer(unity);
在 IOCContainer 中,它显示为“找不到命名空间”。我们应该在这里包含什么命名空间。我已经包含了 Microsoft.Practices.Unity。
您使用的是哪个版本的 EntLib?在 4.1 之前,它有 UnityContainer 而不是 IoCContainer。
编辑:您传递的统一对象是什么?您可能需要发布一些代码。同时,这里有一个可以帮助你的教程。
“找不到命名空间”?
查看文件顶部的“使用”指令,并检查其中是否有任何未用红色标记。也许你有一些错字?或者您可能忘记了对某个库“添加引用”?
您可以安装 Nuget 包Unity.Mvc3
,然后使用以下代码:
var container = new UnityContainer();
container.RegisterType<IFoo, Foo>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
您缺少以下课程。这也花了我一段时间才找到。在此处
找到以下代码参考
class ScopeContainer : IDependencyScope
{
protected IUnityContainer container;
public ScopeContainer(IUnityContainer container)
{
if (container == null)
{
throw new ArgumentNullException("container");
}
this.container = container;
}
public object GetService(Type serviceType)
{
if (container.IsRegistered(serviceType))
{
return container.Resolve(serviceType);
}
else
{
return null;
}
}
public IEnumerable<object> GetServices(Type serviceType)
{
if (container.IsRegistered(serviceType))
{
return container.ResolveAll(serviceType);
}
else
{
return new List<object>();
}
}
public void Dispose()
{
container.Dispose();
}
}
class IoCContainer : ScopeContainer, IDependencyResolver
{
public IoCContainer(IUnityContainer container)
: base(container)
{
}
public IDependencyScope BeginScope()
{
var child = container.CreateChildContainer();
return new ScopeContainer(child);
}
}