gpt4 book ai didi

c# - WebApp.Start 方法类型参数

转载 作者:可可西里 更新时间:2023-11-01 08:11:29 26 4
gpt4 key购买 nike

根据本文使用 Owin 将我的 Windows 服务应用程序设置为自托管:

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

我使用了 WebApp.Start 方法的重载:

WebApp.Start Method (String)

这是我的代码:

//(in startup method) 
_server = WebApp.Start<Startup>(BaseAddress);

public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
var config = new HttpConfiguration();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new
{
id = RouteParameter.Optional
});

appBuilder.UseWebApi(config);
}
}

它工作正常,所以没有提示。

但是Start方法的类型参数到底有什么要求呢?它似乎没有任何限制,而且我无法找到任何关于此参数的选项/要求的文档。它是否寻找将 IAppBuilder 作为参数的方法?如果我将 Configuration() 方法的名称更改为其他名称怎么办?如果我将方法设为内部怎么办?我可以使用此类配置其他选项吗?

所有这些都记录在哪里?我觉得如果没有上面链接的文章,我永远无法弄清楚要实现什么。

最佳答案

WebApp 类使用反射获取指向 Configuration(IAppBuilder) 方法的指针,然后调用它。如果您作为泛型类型参数提供的类没有带有预期参数的 Configuration 方法,那么您会在运行时遇到错误。

我同意这不像我们希望的那样容易发现,我不确定为什么最初的开发人员以这种方式实现它而不是添加一个 where T: IStartup 约束。这不仅会使它在没有文档的情况下更容易被发现,而且还允许编译器在编译时进行检查。

这种方法的唯一优点是 OWIN 开发人员可以在未来添加更多方法或具有不同签名的方法,而不会破坏现有代码。

关于c# - WebApp.Start<TStartup> 方法类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24935092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com