esto lo escribí en el notepad hace unos días, pero lo voy a pegar aquí, va y a alguien le sirve:
1:27 PM 11/24/2004 hora de Cuba.
hace una pila de dias que quería hacer que una clase (C#) implementara una interfaz pero que los métodos definidos en esa interfaz devolvieran otra cosa que no era lo que definía la interfaz, pregunté en un foro de microsoft, pero parece que el tipo no me entendió bien la pregunta, pero un tipo de desarollador 5 estrellas me lo dijo, y era así por ejemplo:
Interface ICloneable{
object Clone();
}
public MyClass : ICloneable{
// implementacion explicita de ICloneable
...
private object MyClone(){
return new MyClass(this);
}
// implementacion por defecto de clone
public MyClass Clone(){
return this.MyClone() as MyClass;
}
// solo visible cuando se utilice la referencia a travez de la interfaz
object ICloneable.Clone(){
return this.MyClone() as MyClass;
}
...
}
esto es exactamente lo que yo quería, pues ahora al hacer
MyClass x = new MyClass();
MyClass y = x.Clone();
//se llama al metodo que devuelve un
//MyClasss y no es necesario un cast;
ICloneable j;
j = x
j.Clone(); //se llama al metodo ICloneable.Clone de MyClass,
que alegría!! como voy a usar eso ahora, y eso es lo que hacen todas las clases en .Net
No comments:
Post a Comment