Si je l'ai fait :
void MyMethod(Object obj) { ... }
Comment puis-je lancer obj
à ce que son type réel est ?
Si je l'ai fait :
void MyMethod(Object obj) { ... }
Comment puis-je lancer obj
à ce que son type réel est ?
Transformez-le en son type réel si vous connaissez le type, par exemple, il est orienté à partir de la classe nommée abc. Vous pouvez appeler votre fonction de cette façon :
(abc)(obj)).MyFunction();
si vous ne connaissez pas la fonction, elle peut être réalisée d'une manière différente. Ce n'est pas toujours facile. Mais vous pouvez la trouver d'une certaine manière par sa signature. Si c'est votre cas, vous devriez nous le faire savoir.
Si plusieurs types sont possibles, que la méthode elle-même ne connaît pas le type à exprimer, mais que l'appelant le connaît, vous pouvez utiliser quelque chose comme ceci :
void TheObliviousHelperMethod<T>(object obj) {
(T)obj.ThatClassMethodYouWantedToInvoke();
}
// Meanwhile, where the method is called:
TheObliviousHelperMethod<ActualType>(obj);
Des restrictions sur le type peuvent être ajoutées à l'aide de l'option where
après les parenthèses.
Vous pouvez également utiliser Correspondance de motifs
void MyMethod(Object obj) {
if(obj is SomeType myVar){
myVar.MyFunction();
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.