【发布时间】:2012-04-20 00:20:24
【问题描述】:
我试图弄清楚 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 对象成为 PrivateLease 或 BusinessLease 对象的通用对象,该对象包含其中一个对象的所有数据。然后在向数据库插入/更新/删除时,我会先询问它是哪种类型,以确定将数据插入到哪些表中。
我有一种奇怪的感觉,上面的方法不是解决这个问题的正确方法。有人对此有任何提示吗? :-) 我在谷歌上搜索并阅读了我的编程书籍,每个人都建议使用这种方法,即拥有一个基类,然后从它继承到其他类。
非常感谢任何帮助/提示!
提前致谢。
编辑
应该从一开始就详细说明一下,我很抱歉!
上面提到的类只是从我的 ASP.NET 解决方案的 UI 中保存数据,以通过数据访问层对数据库执行 CRUD 操作。所以基本上这些类只包含一堆保存数据的属性。即:
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; }
}
等等。
PrivateLease 和 BusinessLease 类是不同的,因为现实世界中存在不同的租赁变量 :-)
基本上我可以只使用两个单独的PrivateLease 和BusinessLease 对象,但由于模型规定Address 对象可以容纳一个或多个Leases,所以这不是一个选项。
对我来说,我似乎将在 ASP.NET 前端和 DAL 上经历一次重大的铸造地狱? :-/
【问题讨论】:
-
在这里查看我的解决方案:stackoverflow.com/questions/8636568/…
标签: c# .net inheritance polymorphism