C# Asp.NET Web API中的控制器和类列表

C# Asp.NET Web API中的控制器和类列表,c#,asp.net,asp.net-web-api,wsdl,service-discovery,C#,Asp.net,Asp.net Web Api,Wsdl,Service Discovery,我想访问web api中的所有控制器。假设我有2个控制器和2个类 Foo: string fooId string fooName string barId string barName Get(int fooId) Post([FromBody] Foo foo) Get(int barId) Post([FromBody] Bar bar) 栏: string fooId string fooName string barId string barName Get(i

我想访问web api中的所有控制器。假设我有2个控制器和2个类

Foo

string fooId

string fooName
string barId

string barName
Get(int fooId)

Post([FromBody] Foo foo)
Get(int barId)

Post([FromBody] Bar bar)

string fooId

string fooName
string barId

string barName
Get(int fooId)

Post([FromBody] Foo foo)
Get(int barId)

Post([FromBody] Bar bar)
样本1控制器

string fooId

string fooName
string barId

string barName
Get(int fooId)

Post([FromBody] Foo foo)
Get(int barId)

Post([FromBody] Bar bar)
采样控制器

string fooId

string fooName
string barId

string barName
Get(int fooId)

Post([FromBody] Foo foo)
Get(int barId)

Post([FromBody] Bar bar)
我想列出我的控制器、Foo和带有属性的Bar类。我该怎么做

更新

string fooId

string fooName
string barId

string barName
Get(int fooId)

Post([FromBody] Foo foo)
Get(int barId)

Post([FromBody] Bar bar)

我想为移动应用程序创建请求和响应类。例如,如果我远程访问这些详细信息,我可以为java或objective-c创建请求和响应类

要获取包含控制器的程序集,请向其中一个控制器添加操作,以便在执行时可以获取程序集:

var types = GetType().Assembly.GetTypes();
现在,您可以循环这些类型并测试它是什么类型。如果所有控制器都实现了一个公共接口或扩展了一个公共类等。。。您还可以测试名称空间

例如:

for (var t in types)
{
   if (t.IsSubClassOf(typeof( ApiController))){  .... }
}
以下是一个教程/示例:


您可以使用
ApiExplorer
类,该类是专门为Web API生成文档而设计的

通常,它用于生成HTML帮助页面,但没有什么可以阻止您创建更具机器可读性的输出,如JSON或XML。如果您通过一个API操作方法公开输出,那么您将根据请求的类型获得一个或多个API方法,就像任何其他API方法一样

有一篇关于创建帮助页面的好文章,但是除了HTML之外,没有太多关于输出其他内容的内容。不幸的是,ApiExplorer类是不可序列化的,因此您不能只返回调用
GetApiExplorer()
的结果,但创建我们自己的可序列化类、填充它们然后从API操作返回这些类就足够简单了


您可以使用
GlobalConfiguration.Configuration.Services.GetApiExplorer().apisdescriptions
访问
ApiExplorer
类。这将返回一个
集合。

好的,您可以参考一个教程或示例吗?抱歉,这些信息对我来说还不够。我不知道我把这些代码放在哪里了。我是Web API的新手。然后你正在做一些你不应该做的事情,这就是你如何做的。您需要了解最近构建的web api解决方案的类型和特性,并且需要自己生成对类和请求/响应的访问。使用WebAPI Odata允许通过元数据链接访问这些对象。这里有一个链接,指向我遵循的教程之一。odata提供程序有一个元数据资源,其他应用程序可以使用它来获取访问点的强类型xml模式,然后这些模式可以被上述应用程序转换为对象,以便与WebAPI odata端点集成。@Pynt感谢您的评论。这很有帮助,但这只是一个例子。我需要控制器和模型。例如,有5个控制器和5个模型。我需要哪个控制器使用Model1,哪个控制器使用Model2。此外,我还需要控制器url和HTTP方法类型(GET、POST等)。当您说它只提供模型时,您是指当外部应用程序使用WebAPI OData控制器时,在设置WebAPI OData控制器之后的服务引用结果吗?如果是这样,那么这些模型应该与WebAPI上的控制器一一对应,那么辅助应用程序就能够正确使用这些“模型”来构建OData查询以检索数据。AngularJS有一个OData框架。当然还有C#,它们都可以从WebAPI服务引用生成查询。@Pynt有关于它的示例吗?我最初的评论中提供的链接在页面顶部有可用的源代码,但我也将在这里包括它:。要检查的关键点是模型、visual studio从模型创建的控制器以及包含路由数据的webapiconfig.cs。或者您想要一个从另一个项目中使用WebAPI Odata服务的示例吗?就是这样!!谢谢@petelids!