REST WebAPI 接口作为 API 调用中的参数

use*_*562 5 asp.net rest dependency-injection interface asp.net-web-api

我正在使用 ASP.NET WebAPI 构建 REST API。一切工作正常,但后来我想到了在所有方法调用中使用接口的好主意。更改所有方法后,我注意到将控制器方法中的参数设置为接口后,我的 API 调用不起作用。我正在使用 OWIN Self 主机和 Unity 依赖注入。这是我的相关代码:

解决我的界面:

      IUnityContainer container = new UnityContainer();

      container.RegisterType<IMyInterface, MyInterfaceImpl>(new HierarchicalLifetimeManager());
      HttpConfiguration config = new HttpConfiguration();
      config.DependencyResolver = new UnityDependencyResolver(container);  
Run Code Online (Sandbox Code Playgroud)

我的控制器(我收到错误的部分)

    [Route("test")]
    [HttpGet]
    public HttpResponseMessage GetSomeData([FromUri]IMyInterface searchObject)
    {
         return this._searchService.SearchForData(searchObject);

    }
Run Code Online (Sandbox Code Playgroud)

调用此方法时,出现无法创建接口的错误。我理解这一点,但问题是解决它。我查看了使用接口而不是具体类的 ASP.NET Web API 操作,还查看了https://brettedotnet.wordpress.com/2014/07/16/web-api-and-interface-parameters/ASP.NET Web API使用接口而不是具体类进行操作,但在我的情况下,所有建议都不起作用(总是收到无法创建接口的错误)。

我想知道是否有人有一个类似这样的工作示例(在 github 或其他地方)只是为了检查我做错了什么(或者甚至知道我还可以尝试什么会很好)

谢谢

小智 0

也许这会有所帮助: ASP.NET Web API 中的参数绑定
如何在 MVC/WebAPI 中的操作签名中绑定到自定义对象
您不能使用格式化程序,因为您的数据来自 URI。我认为您可以使用链接中的 Modelbinder 方法。