如何在MVC控制器中投射System.Type
本文关键字:System Type 控制器 MVC | 更新日期: 2023-09-27 18:20:51
所以,我需要得到一个控制器的区域,我用这种方式得到控制器:
var assembly = System.Reflection.Assembly.GetCallingAssembly();
var controllers = from type in assembly.GetTypes()
where type.Name.Contains("Controller")
select type;
好吧,用这种方式,我有所有的控制器,但它们都是Type,我怎么能在MVC控制器中转换?"因为我需要用这样的东西得到控制器区域:
string area = controller.ControllerContext.RouteData.DataTokens["area"].ToString();
那么呢?
不能将Type强制转换为对象的实例。这没有道理。您可以通过查看type.FullName
来检查定义此类型的命名空间,这是了解此类型所代表的控制器在哪个区域中定义的唯一方法。顺便说一句,使用type.Name.Contains("Controller")
检查给定类型是否为控制器似乎非常脆弱。您最好使用where typeof(Controller).IsAssignableFrom(type);
您可以使用创建类型的对象
Activator.CreateInstance(type);