我試圖從API控制器中獲取Attribute標記,以便我可以在運行時看到它允許的HTTP動詞。從下面的示例代碼中,我希望能夠獲得[HttpGet]
標記。從MVC中的Controller方法獲取屬性標記?
[HttpGet]
public void MyResource()
{
// Controller logic
}
我目前使用的System.Reflection
在運行時收集有關我的API等信息,但到目前爲止,我已經無法檢索[HttpGet
標籤和其他Http
動詞標籤。我已經試過每個解決方案的下方,沒有運氣:
public void GetControllerMethodHttpAttribute()
{
MethodInfo controllerMethod = typeof(TestController).GetMethods().First();
// Solution 1
var attrs = controllerMethod.Attributes;
// Solution 2
var httpAttr = Attribute.GetCustomAttributes(typeof(HttpGetAttribute));
// Solution 3
var httpAttr2 = Attribute.GetCustomAttribute(controllerMethod, typeof(HttpGetAttribute));
// Solution 4
var httpAttr3 = Attribute.IsDefined(controllerMethod, typeof(HttpGetAttribute));
}
這一切都是我研究過這個話題不僅關係到Custom Attribute tags
和拉動值超出那些以前的問題,但我找不到任何有關獲得框架的信息 - 包括Attribute tags
。
有誰知道我怎麼能得到[HttpGet]
屬性標籤?
謝謝!
您是否需要「此操作支持get/post/etc」,或者屬性(訂單,模板等)中的完整信息? – gunr2171
您是否驗證過typeof(TestController).GetMethods()。First()'返回預期的方法? – thehennyy
@ gunr2171完整的信息將是首選,但最重要的是,我希望能夠說出每種方法支持的動詞。 –