C# 继承-获取基类型祖父母
在ViewStart文件中,我需要根据渲染视图的控制器类型渲染不同的布局 我需要确定最低级别的控制器是否来自VehicleController 假设我有这样一个继承模型:C# 继承-获取基类型祖父母,c#,inheritance,abstract,C#,Inheritance,Abstract,在ViewStart文件中,我需要根据渲染视图的控制器类型渲染不同的布局 我需要确定最低级别的控制器是否来自VehicleController 假设我有这样一个继承模型: CarController: VehicleController FordController: CarController FordFocusController: FordController 现在,在FordFocusController中,我有一个简单的Index()方法返回一个视图 因此,在ViewStart中
CarController: VehicleController
FordController: CarController
FordFocusController: FordController
现在,在FordFocusController中,我有一个简单的Index()方法返回一个视图
因此,在ViewStart中,我可以像这样确定控制器:
ViewContext.Controller.GetType().BaseType // returns FordController - correct!
现在,对于FordFocusController,这将返回FordController
然而,我如何判断这是否是一种车辆控制器,在这种情况下,它处于最低级别
我不想做这样的事情,因为它不是动态的
ViewContext.Controller.GetType().BaseType.GetType().BaseType.GetType()
谢谢在C#中,有一个关键字“”表示感谢
你可以把它当作
if (ViewContext.Controller is VehicleController)
{
...
}
在继承结构中
CarController: VehicleController
FordController: CarController
FordFocusController: FordController
例如:
var cc = new VehicleController();
var fc = new FordController();
var ffc = new FordFocusController();
var direct = (fc is VehicleController); // true, a ford controller is also a vehicle controller
var indirect = (ffc is VehicleController); // true, a ford focus controller is also a vehicle controller
//cast it to a variable
if (ffc is VehicleController myVehicleController)
{
....here you can use myVehicleController of type VehicleController
}
您好
Mike在C#中,有一个关键字“”表示这一点
你可以把它当作
if (ViewContext.Controller is VehicleController)
{
...
}
在继承结构中
CarController: VehicleController
FordController: CarController
FordFocusController: FordController
例如:
var cc = new VehicleController();
var fc = new FordController();
var ffc = new FordFocusController();
var direct = (fc is VehicleController); // true, a ford controller is also a vehicle controller
var indirect = (ffc is VehicleController); // true, a ford focus controller is also a vehicle controller
//cast it to a variable
if (ffc is VehicleController myVehicleController)
{
....here you can use myVehicleController of type VehicleController
}
您好
Mike您可以通过执行<代码>is VehicleController myVariable将强制转换版本分配给变量您可以通过执行<代码>is VehicleController myVariable将强制转换版本分配给变量