繁体   English   中英

如何在MVC控制器中转换System.Type?

[英]How can i cast System.Type in MVC Controller?

所以,我需要得到一个控制器的区域,我用这种方式得到控制器:

var assembly = System.Reflection.Assembly.GetCallingAssembly();
var controllers = from type in assembly.GetTypes()
                  where type.Name.Contains("Controller")
                  select type;

好吧,用这种方式我所有的控制器,但它们是类型,我怎么能在MVC控制器中投射? 因为我需要用这样的东西来获得控制器区域:

string area = controller.ControllerContext.RouteData.DataTokens["area"].ToString();

所以?

您不能将Type转换为对象的实例。 这没有意义。 您可以通过查看type.FullName来检查定义此类型的命名空间,并且是唯一的方法来了解此Type所代表的控制器在哪个Area中定义。通过检查给定类型是否为控制器的方式type.Name.Contains("Controller")似乎非常脆弱和脆弱。 你最好使用where typeof(Controller).IsAssignableFrom(type);

您可以使用创建类型的对象

Activator.CreateInstance(type);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM