Dérivée et classe de base, puis-je définir explicitement la base?
public class SuperCar: Car
{
public bool SuperWheels { get {return true; } }
}
public class Car
{
public bool HasSteeringWheel { get {return true;} }
}
Comment puis-je définir la classe de base pour le calcul de la Supercar?
Par exemple, je veux simplement mettre SuperCars de la classe de base comme ceci:
public void SetCar( Car car )
{
SuperCar scar = new SuperCar();
car.Base = car;
}
En gros, si j'ai des objets car, je ne veux pas manuellement parcourir chaque propriété de la voiture afin de l'installation de la SuperCar oject, je pense que c'est la seule façon que vous pouvez le faire, mais si vous pouvez le faire de l'autre il serait tellement mieux.
source d'informationauteur Watson
Vous devez vous connecter pour publier un commentaire.
Je utiliser quelque chose comme cela dans la sous-classe et il fonctionne très bien pour moi:
Ce n'est pas possible.
Vous devez définir manuellement les propriétés.
Si je comprends votre question correctement (et je ne suis pas entièrement sûr que je suis), alors vous pouvez sorte d'obtenir le comportement que vous souhaitez en faire quelque chose comme ceci:
Ensuite, vous pouvez faire ceci:
Noter que vous devez être très prudent dans votre "copie" du constructeur de ne pas copier les propriétés de telle manière que les deux objets partagent les mêmes membres (références) quand ils ne devraient pas.
Je dois demander, si, quel est votre objectif avec cette?
Ensemble beaucoup de commentaires utiles. Je pense que la réponse a été donnée par pst et je pense que c'est correct:
Aucun. Brièvement la raison: Il n'est pas séparé de l'objet de base. (objet)ce == (objet)la base est toujours vrai. Il existe des moyens pour effectuer le clonage et de la copie par la réflexion (et d'autres). Peut-être décrire ce que l'on voulait vraiment
Donc, sa suggestion de l'aide de l'outil automapper a été également très utile et est en substance ce que je cherchais.
Vous ne pouvez copier le contenu d'une autre classe, mais pas directement. Voir l'exemple ci-dessous à l'aide de ce qu'on appelle un constructeur de copie.
La clé est le mot clé
base()
après le constructeur déclaration.Tout d'abord, Chaque SuperCar objet est différent de l'autre. Héritage vous permet de définir le comportement des objets liés, Cela ne signifie pas qu'ils sont les mêmes objets. Chaque objet de type a son propre processus de construction. Avant qu'un enfant objet est créé, l'objet de la classe de base n'est créé que par la hiérarchie d'héritage. Si vous souhaitez utiliser une propriété commune, pour toutes les SuperCar objets, vous aurez besoin de maintenir une autre instance de l'objet Voiture à l'intérieur de SuperCar exemple, d'attribuer à la commune de la voiture de l'objet dans la voiture, objet de SuperCar et remplacer les propriétés dérivées à partir de la base de la Voiture de l'objet et de le rediriger vers les accessoires. interne de l'objet Voiture.
Mais je stiill croire, il ya quelque chose de mal avec cette conception de la façon dont vous voulez le faire. Si vous pouvez nous le faire savoir le plus grand format pour lesquelles vous voulez faire cela, on peut venir avec une meilleure conception pour répondre à votre exigence.
Si vous souhaitez avoir plus de contrôle que de copier reflète les propriétés d'essayer d'appliquer le Générateur de modèle. T peut être toute classe dérivée de BaseClass.