所以,我需要得到一个控制器的区域,我用这种方式得到控制器:
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();
因此?
答案 0 :(得分:2)
您无法将Type转换为对象的实例。这没有意义。您可以通过查看type.FullName
来检查定义此类型的命名空间,并且是了解此Type所代表的控制器在哪个Area中定义的唯一方法。顺便检查给定类型是否为使用type.Name.Contains("Controller")
的控制器似乎非常脆弱和脆弱。你最好使用where typeof(Controller).IsAssignableFrom(type);
答案 1 :(得分:0)
您可以使用
创建类型的对象Activator.CreateInstance(type);