[英]How to access the derived class properties from base class instance using generic method
我試圖通過基類引用變量訪問派生類的所有屬性。
班級
public class vehicle
{
public int ID { get; set; }
}
public class Car : vehicle
{
public string type { get; set; }
public string Name { get; set; }
}
這是主班的主要課程
public static void saveCar<T>(T vehicle) where T : vehicle
{
//TODO : here I need to access all the propertie values but I dunno how access only derived class values
}
我正在嘗試這樣做
static void Main(string[] args)
{
Car cr = new Car
{
ID = 1,
type = "car",
Name = "Maruthi"
};
saveCar<Car>(cr);
}
您不能真正要求T並知道您的不動產。
我認為您應該將設計更改為以下內容:
public abstract class Vehicle
{
public int Id { get; set; }
public virtual void SaveCar()
{
// save Id
}
}
public class Car : Vehicle
{
public string Type { get; set; }
public string Name { get; set; }
public override void SaveCar()
{
base.SaveCar();
// Save type & name
}
}
為什么將saveCar作為通用方法? 如果saveCar方法是Vehicle上的虛擬方法,則可以在每種派生類型中覆蓋並具有所需的擴展保存功能。 但是,如果您需要外部方法來處理諸如save的操作,並將Vehicle及其派生類作為簡單的數據表示形式,則需要檢查對象並采取相應的措施。 像:
public static void saveCar(Vehicle vehicle)
{
if (vehicle != null)
{
Console.WriteLine(vehicle.ID);
if (vehicle is Car)
{
var car = vehicle as Car;
Console.WriteLine(car.Name);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.