我是ASP.NET MVC的新手,我对如何使用C#这样的编译语言感到困惑,类名在构建项目后可能有任何意义。有人可以向我解释构建过程是如何进行的吗
public class SomePageController : Controller {
public ActionResult Index() { return View(); }
}
并抓取名称SomePage
和Index
以创建调用函数SomePage/Index
的网址映射Index()
?我只知道如果有其他C#文件以某种方式能够查看从Controller
类派生的所有类并获得一个不带后缀"Controller"
的名称的字符串,我才能理解这是如何工作的。但是,对于我来自C ++背景,这似乎很奇怪,因为我从未见过一种语言可以引用变量引用自己名称的方式,也从未见过迭代通过某个类派生的所有类的方法。
也许有人可以告诉我如何编写像
这样的C#程序public class SomePageController : Controller {
public ActionResult Index() { return View(); }
}
public class SomeOtherPageController : Controller {
public ActionResult Index() { return View(); }
}
public void printPageNames ( void )
{
// ... Will print "SomePage, SomeOtherPage" to the console
}
答案 0 :(得分:2)
您需要阅读的内容是Reflection。它允许您查看程序集中的所有类,属性等。
直接回答您的问题,Jon Skeet has the starting point如何完成此任务。
您的代码看起来像这样:
var assembly = Assembly.GetExecutingAssembly();
foreach (var controller in assembly.GetTypes().Where(a => a.Name.EndsWith("Controller"))
{
Console.WriteLine(controller.Name.TrimEnd("Controller"));
}