我無法從基類對象名訪問派生類屬性。使用基類創建對象時無法訪問dervied類屬性
我的動機是我需要消除類中重複的屬性,並需要使用基類名創建對象。
public abstract class Request
{
public int RequestId { get; set; }
public string Reason { get; set; }
public bool IsApproved { get; set; }
public bool IsRejected { get; set; }
public Employee Employee { get; set; }
}
public class Permission : Request
{
public DateTime FromTime { get; set; }
public DateTime ToTime { get; set; }
public PermissionType PermissionType { get; set; }
}
public class Leave: Request
{
public DateTime FromDate { get; set; }
public DateTime ToDate { get; set; }
public LeaveType LeaveType { get; set; }
}
class Program
{
static void Main(string[] args)
{
Request req = new Permission();
req.Reason = 1;
req.Reason = "232";
req.FromTime = DateTime.Now; // Here i'm getting error as 'Request does not contain definition'
req.ToTime = DateTime.Now.AddHours(1); // Here i'm getting error as 'Request does not contain definition'
}
}
Ric - >在哪種情況下,我們需要創建對象,如「Request req = new Permission();」 – Harishankaran
如果您只需要從基礎訪問屬性/方法而無需知道或關心實際的派生類型,例如Permission或Leave,或者創建一個只接受'Request'類型的參數的方法,例如'void DoStuff(Request r ){r.IsApproved = false; }'這將適用於所有派生類型的'Request' – Ric