我试图弄清楚 C# 中的多态性/继承情况。
我现在拥有的是这些课程:
Lease (the base class containing the general data)
PrivateLease (inheriting from the Lease class)
BusinessLease (inheriting from the Lease class)
我想要实现的是:
Lease lease = new PrivateLease();
这目前有效,但在执行此操作时我无法访问PrivateLease
对象的属性。至少在没有先将对象转换为Lease
对象的情况下并非如此PrivateLease
。
我希望该Lease
对象成为 aPrivateLease
或BusinessLease
object 的一般对象,该对象包含其中一个对象的所有数据。然后,在向数据库插入/更新/删除时,我会先询问它是哪种类型,以确定将数据插入到哪些表中。
我有一种奇怪的感觉,上面不是解决这个问题的正确方法。有人对此有任何提示吗?:-) 我在谷歌上搜索并阅读了我的编程书籍,每个人都建议这种方法拥有一个基类,然后从它继承到其他类。
非常感谢任何帮助/提示!
提前致谢。
编辑
应该从一开始就详细说明这一点,我很抱歉!
上面提到的类只是从我的 ASP.NET 解决方案的 UI 中保存数据,以通过数据访问层对数据库执行 CRUD 操作。所以基本上这些类只包含一堆保存数据的属性。IE:
public class Lease
{
public int Id { get; set; }
public bool IsActive { get; set; }
public string TypeOfRental { get; set; }
public string RentalPeriod { get; set; }
public DateTime TakeoverDate { get; set; }
}
public class PrivateLease : Lease
{
public string Floor { get; set; }
public string Side { get; set; }
public int FloorSize { get; set; }
public int NumberOfRooms { get; set; }
}
ETC..
PrivateLease
和类是不同的BusinessLease
,因为现实世界中存在不同的租赁变量:-)
基本上我可以只使用两个单独的PrivateLease
andBusinessLease
对象,但是由于模型规定一个Address
对象可以容纳一个或多个Lease
s,所以这不是一个选择。
对我来说,似乎我将在 ASP.NET 前端和 DAL 上经历一次重大的铸造地狱?:-/