Multi-héritage en C #: une méthode pratique
En raison de la complexité potentielle du code, C # lui-même ne prend pas en charge l'héritage multiple (un héritage de classe provient de plusieurs classes de base). Cependant, il existe des méthodes alternatives qui peuvent implémenter efficacement des fonctions similaires.
Héritage
Au lieu de simuler l'héritage multiple, il est préférable d'envisager d'utiliser une combinaison. Définissez l'interface qui représente les attributs et comportements requis, puis utilisez ces classes de combinaison d'interface. Par exemple, l'interface peut représenter l'attribut de
, et l'interface peut représenter la propriété ISteerable
. SteeringWheel
IBrakable
Méthode d'extension BrakePedal
C # 3.0 introduit la méthode d'extension qui vous permet d'étendre la classe sans modifier le code source. À l'aide de la méthode d'extension, vous pouvez simplifier le fonctionnement de la méthode d'appel d'attribut combiné. Par exemple, vous pouvez créer des méthodes d'extension pour et pour fournir des méthodes telles que et
, comme indiqué dans l'exemple de code suivant:
ISteerable
IBrakable
Exemples pratiques SteerLeft()
Stop()
<code class="language-csharp">public interface ISteerable { SteeringWheel wheel { get; set; } } public interface IBrakable { BrakePedal brake { get; set; } } public class Vehicle : ISteerable, IBrakable { public SteeringWheel wheel { get; set; } public BrakePedal brake { get; set; } public Vehicle() { wheel = new SteeringWheel(); brake = new BrakePedal(); } } public static class SteeringExtensions { public static void SteerLeft(this ISteerable vehicle) { vehicle.wheel.SteerLeft(); } } public static class BrakeExtensions { public static void Stop(this IBrakable vehicle) { vehicle.brake.ApplyUntilStop(); } } public class Main { Vehicle myCar = new Vehicle(); public void Main() // 注意这里将main改为了Main { myCar.SteerLeft(); myCar.Stop(); } }</code>
Créez une nouvelle classe qui hérite à partir de et des instances de la classe client pour atteindre .
Hériter du et atteindre
(non recommandé) d'une manière ou d'une autre.Component
Ces deux méthodes doivent être utilisées pour chaque méthode. Cependant, l'utilisation de méthodes de combinaison et d'extension peut combiner les deux interfaces en une seule classe pour éviter les conflits et simplifier la maintenance: ITextTcpClient
TextTcpClient
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!