簡體   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