Supongamos que tenemos el caso de una clase que implementa dos interfaces tal y como sigue:
public interface IInterface1
{
int method();
int method1();
}
public interface IInterface2
{
int method();
int method2();
}
public class ExampleClass : IInterface1, IInterface2
{
public int method() { return 1; }
public int method1() { return 1; }
public int method2() { return 2; }
}
En este caso, el método method está presente en las dos interfaces y lo definimos en la clase.
Si necesitáramos distinguir alguno de los casos se podría usar la implementación explícita de interfaces.
public class ExampleClass : IInterface1, IInterface2
{
public int method() { return 1; }
public int method1() { return 1; }
public int method2() { return 2; }
int IInterface1.method() { return 1; }
int IInterface2.method() { return 2; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ExampleClass example = new ExampleClass();
IInterface1 i1 = (IInterface1)example;
IInterface2 i2 = (IInterface2)example;
MessageBox.Show("Interface 1: " + i1.method());
MessageBox.Show("Interface 2: " + i2.method());
}
}
Esto devolvería como resultados 1 y 2 respectivamente. Como vemos, a pesar de realizar la implementación explícita de ambas interfaces se sigue pudiendo implementar de la forma tradicional como caso base.
0 comentarios:
Publicar un comentario