ใน C# สมาชิกของ Interface สามารถ Implement ได้ 2 แบบคือ Explicit และ Implicit
Implicit Implementation คืออะไร?
- ไม่ต้องระบุชื่อ Interface หน้าชื่อ Member คอมไพเลอร์จะอนุมานเอง
- Member จะถูก Expose เป็น
publicและเข้าถึงได้เมื่อ Cast เป็น Concrete Type - การเรียกใช้ Method ไม่ต่างจากปกติ สร้าง Object แล้ว Invoke ทันที
- ข้อจำกัด: ไม่สามารถใช้ได้หากมีชื่อ Method ซ้ำกันในหลาย Interfaces
ตัวอย่างโค้ด
interface ICar { void DisplayCar(); }
interface IBike { void DisplayBike(); }
class ShowRoom : ICar, IBike
{
public void DisplayCar()
{
throw new NotImplementedException();
}
public void DisplayBike()
{
throw new NotImplementedException();
}
}
class Program
{
static void Main()
{
ICar car = new ShowRoom();
IBike bike = new ShowRoom();
Console.ReadKey();
}
}
เมื่อไหร่ควรใช้ Implicit?
- ไม่มีชื่อ Method ซ้ำกันระหว่าง Interfaces
- ต้องการให้ Member เข้าถึงได้จาก Concrete Type โดยตรง
- โค้ดอ่านง่าย ไม่ต้อง Cast ไปมา