simulasi warisan berganda di C#
Gunakan simulasi antara muka lebih banyak warisan
C# tidak menyokong lebih banyak warisan, tetapi boleh digunakan untuk mensimulasikannya. Berikut adalah contoh:
<code class="language-csharp">public interface IFirst { void FirstMethod(); } public interface ISecond { void SecondMethod(); } public class First : IFirst { public void FirstMethod() { Console.WriteLine("First"); } } public class Second : ISecond { public void SecondMethod() { Console.WriteLine("Second"); } } public class FirstAndSecond : IFirst, ISecond { First first = new First(); Second second = new Second(); public void FirstMethod() { first.FirstMethod(); } public void SecondMethod() { second.SecondMethod(); } }</code>
kaedah penjanaan kod FirstAndSecond
Sebaik -baiknya, harus ada cara untuk menghasilkan gabungan pelbagai kelas yang ada. Ini boleh dilaksanakan menggunakan generasi kod atau sintaks C# fiksyen, seperti yang ditunjukkan di bawah:
Alternatif gabungan
<code class="language-csharp">public class FirstAndSecond : IFirst from First, ISecond from Second { }</code>
memudahkan kaedah pengembangan untuk memanggil
kaedah lanjutan (diperkenalkan dalam C# 3.0) dapat memudahkan kaedah atribut tersembunyi:
<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(); } }</code>
Berbanding dengan simulasi pelbagai warisan, alternatif ini memberikan kaedah yang lebih jelas dan lebih fleksibel.
Atas ialah kandungan terperinci Bagaimanakah banyak warisan boleh disimulasikan dalam C# dan apakah alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!