Unity参数构造函数异常

时间:2013-11-14 15:18:30

标签: c# asp.net-web-api unity-container

在我的WebApi的bootstrapper类中,我试图根据其接口类型注册一个名为“Facade”的类的新实例。

在这种被注册的类型中,它需要一个新的'CRUDOperator'实例,它的构造函数中也有一个新的'Adapter'实例。我正在尝试做什么?我目前正在接受一个异常,即超载参数不正确。

 public static class Bootstrapper
{
    public static void Initialise()
    {
        var container = BuildUnityContainer();

        GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);
    }

    private static IUnityContainer BuildUnityContainer()
    {
        var container = new UnityContainer();

        *****ERROR*****
        container.RegisterType<IFacade,Facade>(new CRUDOperatorSelector(new Adapter()));

        return container;
    }
}

1 个答案:

答案 0 :(得分:0)

Unity能够解析具体类型而无需注册它们,因此如果在您的情况下CRUDOperatorSelector和Adapter类型是具体类型(我假设它们是),您只需要将类型Facade注册为IFacade的实现并解决它。然后,Unity将创建每个依赖项的实例,并将其传递给Facade的构造函数。 如果其中一些类型实现了抽象(接口或抽象类),也可以注册它们。