tengo la siguiente interfaz:casting un objeto a una interfaz genérica
internal interface IRelativeTo<T> where T : IObject
{
T getRelativeTo();
void setRelativeTo(T relativeTo);
}
y un montón de clases que (debería) ponerla en práctica, tales como:
public class AdminRateShift : IObject, IRelativeTo<AdminRateShift>
{
AdminRateShift getRelativeTo();
void setRelativeTo(AdminRateShift shift);
}
Soy consciente de que estos tres no son los mismos:
IRelativeTo<>
IRelativeTo<AdminRateShift>
IRelativeTo<IObject>
pero sin embargo, necesito una manera de trabajar con todas las diferentes clases como AdminRateShift (y FXRat eShift, DetRateShift) que todos deberían implementar IRelativeTo. Digamos que tengo una función que devuelve AdminRateShift como un objeto:
IRelativeTo<IObject> = getObjectThatImplementsRelativeTo(); // returns Object
Por la programación en contra de la interfaz, que puede hacer lo que necesito, pero en realidad no puedo enviar el objeto a IRelativeTo para que pueda usarlo .
Es un ejemplo trivial, pero espero que aclare lo que intento hacer.
Hola, hice el primer método que describió. ¿Hay alguna manera de hacer que una clase que hereda 'IRelativeTo' no tenga que implementar 'IRelativeTo' también? –
@dav_i si mantiene las dos interfaces, entonces no –
Es una lástima, es de esperar que la palabra clave 'new' realmente lo oculte. Aunque supongo que si lanzas tu objeto a lo no genérico, no sabrías qué hacer ... ¡Gracias! –