public interface ITest {
void Test();
}
public class Test : ITest {
void ITest.Test() { //<<== implementacion privada
Console.WriteLine("test");
}
public void Test2() {
Console.WriteLine("test2");
}
}
class Program {
static void Main(string[] args) {
ITest t = new Test();
t.Test();
Test t2 = new Test();
//t2.Test(); //<<=== no compila
Si no lo crees puedes intentarlo tu mismo.
Pero de que me sirve o para que puedo usar esto?
La tecnica te permite asegurarte que el metodo solo es visible a aquellos que usen una variable del tipo de la interface (ITest en este caso). Lo unico que hace es forzar a que el uso de ese metodo sea a travez de una instancia de la interface, osea que, para este ejemplo, si quieres acceder al metodo .Test, solo lo puedes hacer a travez de una variable del tipo ITest.
El unico "truco" para lograr esto es que en la declaracion tienes que agregar el tipo de la interface, antes del miembro:
void ITest.Test();
Seguramente no es el truco mas util, pero es algo para tenerlo guardado ahi en el cofre de los trucos y que en algun momento te sera de utilidad, o talvez algo que te pueda hacer ganar una apuesta ;)
1 comment:
A eso se le conoce como declaracion explicita de los miembros de la interface, implicando que solo serán "vistos" a traves de la interfaz.
Post a Comment