Je l'interface suivante:Lancer un objet à une interface générique
internal interface IRelativeTo<T> where T : IObject
{
T getRelativeTo();
void setRelativeTo(T relativeTo);
}
et un tas de classes qui (devrait) mettre en œuvre, tels que:
public class AdminRateShift : IObject, IRelativeTo<AdminRateShift>
{
AdminRateShift getRelativeTo();
void setRelativeTo(AdminRateShift shift);
}
Je me rends compte que ces trois ne sont pas les mêmes:
IRelativeTo<>
IRelativeTo<AdminRateShift>
IRelativeTo<IObject>
mais néanmoins, je besoin d'un moyen de travailler avec toutes les différentes classes comme AdminRateShift (et FXRat eShift, DetRateShift) qui devrait tous implémenter IRelativeTo. Disons que j'ai une fonction qui retourne AdminRateShift comme objet:
IRelativeTo<IObject> = getObjectThatImplementsRelativeTo(); // returns Object
Par programmation sur l'interface, je peux faire ce que je dois, mais je ne peux pas vraiment jeter l'objet à IRelativeTo je peux l'utiliser .
C'est un exemple trivial, mais j'espère que cela clarifiera ce que j'essaie de faire.
Salut, j'ai fait la première méthode que vous avez décrite. Y a-t-il un moyen de rendre une classe héritière de 'IRelativeTo 'de ne pas avoir à implémenter' IRelativeTo' aussi? –
@dav_i si vous gardez les deux interfaces, alors non –
Dommage, vous vous attendez à ce que le mot clé 'new' le cache vraiment. Bien que je devine alors si vous jetez votre objet au non-générique vous ne sauriez pas quoi faire ... Merci! –