0

在 Global.asax 文件中,我有以下代码。

config.DependencyResolver = new IoCContainer(unity);

在 IOCContainer 中,它显示为“找不到命名空间”。我们应该在这里包含什么命名空间。我已经包含了 Microsoft.Practices.Unity。

4

4 回答 4

0

您使用的是哪个版本的 EntLib?在 4.1 之前,它有 UnityContainer 而不是 IoCContainer。

编辑:您传递的统一对象是什么?您可能需要发布一些代码。同时,这里有一个可以帮助你的教程。

于 2012-08-22T12:18:06.563 回答
0

“找不到命名空间”?

查看文件顶部的“使用”指令,并检查其中是否有任何未用红色标记。也许你有一些错字?或者您可能忘记了对某个库“添加引用”?

于 2012-08-22T12:19:35.957 回答
0

您可以安装 Nuget 包Unity.Mvc3,然后使用以下代码:

var container = new UnityContainer();
container.RegisterType<IFoo, Foo>();

DependencyResolver.SetResolver(new UnityDependencyResolver(container));
于 2012-08-22T13:10:24.900 回答
0

您缺少以下课程。这也花了我一段时间才找到。在此处
找到以下代码参考

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);
    }
}
于 2012-09-01T21:09:05.103 回答