J'ai une propriété qui retourne une interface. Pendant le débogage, je peux casser ce qui a été retourné et tant que c'est l'interface, Visual Studio est assez intelligent pour connaître le type dérivé qu'il est réellement. Je suppose que c'est en utilisant la réflexion ou quelque chose. Je ne suis pas sûr. Ma question est, est-ce que je peux avoir cette même information disponible à moi pendant l'exécution ainsi je peux créer une variable du type approprié et jeter l'interface comme cela? Voici ce que je dis:Comment lancer une interface en tant que type dans C#?
IPreDisplay preDisplay = cb.PreDisplay;
Si preDisplay est un RedPreDisplay je voudrais être capable de coder
RedPreDisplay tmp = preDisplay as RedPreDisplay;
Ou si preDisplay était un GreenPreDisplay ...
GreenPreDisplay tmp = preDisplay as GreenPreDisplay;
etc ... Je voudrais éviter une déclaration de commutation désordonnée si possible, et si je pouvais utiliser des génériques, ce serait génial.
Si vous avez des conseils ou des exemples de comment je peux le faire, s'il vous plaît partager.
pourquoi voudriez-vous faire cela? L'interface de retour n'est-elle pas perdue lorsque vous faites un cast à un type correct, quand vous voulez l'utiliser? – shahkalpesh
Votre question révèle une confusion fondamentale, (ou vous êtes bâclé dans le langage) rien ne peut «retourner» une interface, car les interfaces n'existent pas à l'exécution. Il retourne un objet de type concret, 'CAST' à une interface. Mais la distribution ne change pas l'objet, elle change simplement la nature de la variable contenant la référence à l'objet. –
@Charles Bretana: Il est regrettable que vous ressentiez le besoin d'énoncer ce que vous venez de faire; trop de gens ne comprennent pas la différence entre l'instance d'objet et le type contre lequel elle est lancée. – Randolpho