J'essaie de comprendre la situation d'un polymorphisme/héritage en C#.Polymorphisme: bien faire les choses
Ce que j'est en ce moment ces classes:
Lease (the base class containing the general data)
PrivateLease (inheriting from the Lease class)
BusinessLease (inheriting from the Lease class)
Ce que je veux atteindre est le suivant:
Lease lease = new PrivateLease();
Cela fonctionne au moment, mais je ne suis pas en mesure d'accéder aux propriétés sur l'objet PrivateLease
lorsque vous faites cela. Au moins pas sans coulée d'abord l'objet Lease
à un objet .
J'aimerais que l'objet Lease
soit l'objet général d'un objet PrivateLease
ou BusinessLease
qui contient toutes les données pour l'un des objets. Puis, lors de l'insertion/la mise à jour/la suppression de la base de données, je vais demander quel type est le premier à déterminez les tables dans lesquelles insérer les données.
J'ai un étrange sentiment que ce qui précède n'est pas la bonne approche pour résoudre ce problème. Quelqu'un at-il des indices à ce sujet? :-) J'ai cherché sur google et lu dans mes livres de programmation et tout le monde suggère cette approche d'avoir une classe de base et d'en hériter ensuite aux autres classes.
Toute aide/indice est grandement appréciée!
Merci d'avance.
EDIT
aurait dû élaboré un peu ce depuis le début, je suis désolé pour ça!
Les classes mentionnées ci-dessus ne font que conserver des données de l'interface utilisateur de ma solution ASP.NET pour effectuer des opérations CRUD contre la base de données via une couche d'accès aux données. Donc, basiquement, ces classes contiennent seulement un tas de propriétés pour contenir des données. À savoir:
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 ..
Les PrivateLease
et BusinessLease
classes sont différentes en raison des différentes variables leaseing qui existe dans le monde réel :-)
Fondamentalement, je pouvais aller avec la deux objets distincts PrivateLease
et BusinessLease
, mais étant donné que le modèle impose qu'un objet Address
peut contenir un ou plusieurs Lease
s, ce n'est pas une option.
Pour moi, il me semble que je vais passer par un enfer majeur de coulée à la fois sur l'interface ASP.NET et sur le DAL? : -/
Voir ma solution ici: http://stackoverflow.com/questions/8636568/c-sharp-property-inheritance-from-parent-class/8637104#8637104 –