【发布时间】:2016-03-26 07:07:00
【问题描述】:
真正的问题在于反射和装配修补/挂钩。我将举一个简单的例子来展示我的问题,而不会太难理解主要问题。
假设我有这些基本类:
public class Vehicle
{
public string Name;
public string Price;
public void DoSomething()
{
Main.Test(this);
}
}
public class Car : Vehicle
{
public int Wheels;
public int Doors;
}
我在主代码上运行它:
public class Main
{
public void Start()
{
Car testCar = new Car()
{
Name = "Test Car",
Price = "4000",
Wheels = 4,
Doors = 4
};
testCar.DoSomething();
}
public static void Test(Vehicle test)
{
// Is this allowed ?
Car helloWorld = (Car) test;
}
}
好的,问题是:
是否允许进行强制转换(在静态方法测试中)?我会失去 Car 属性但保留 Vehicle 属性吗?
万一出错了,还有其他办法吗?
谢谢。
【问题讨论】:
-
"万一出错了,有没有其他办法呢?"做什么?
-
欢迎来到 Stack Overflow。那应该是相对容易测试的东西。那你试过了吗?如果不是,那是提出问题的先决条件。如果有,您是否遇到了具体问题?
-
@IvanStoev 将对象作为汽车而不是车辆。
-
如果是
Truck怎么办?我的意思是,假设你有另一个类Truck : Vehicle,你怎么知道Vehicle test是Car而不是Truck或任何其他Vehicle派生类
标签: c#