Supposez dans une application Winform Nous avons dans pour utiliser La question est de faire un alias pour Program.cs.cs code>:
soméclass code> dans d'autres classes dans le projet actuel Nous devrions accéder à
programme.someclass code> p>
programme.someclass code> comme par exemple
C1 code> C1 code> et utilisez
C1 code> dans le code au lieu de
programme.someclass code>? p> p>
3 Réponses :
Il suffit de passer cet objet à chaque classe qui doit fonctionner avec elle p>
La question concerne uniquement la possibilité mec. Je sais que ce n'est pas utile.
@ Hpt: les programmeurs résolvent tâches réelles b>. Mieux c'est passer un objet. Le monde sera meilleur si quelqu'un utilisera moins de classes statiques, écrivez donc un code plus flexible.
+1 Pour une meilleure approche, mais la question était de ma curiosité et je cherche un moyen de le faire ne pas résoudre en supprimant le problème principal: D
@ Hpt: Je suis sûr que tout problème peut être résolu sans de tels hacks ;-)
Si vous cherchez simplement à alias la convivialité de la poitriste, faites-le comme un délégué en ligne, comme celui-ci:
Func<SomeClass> c1 = () => Program.someClass;
@ Hpt: c1 () code> vous retournera cette instance. Donc, vous pouvez effectuer
c1 (). Someclassmethod () code> par exemple.
@ Hpt: c'est toujours une dépendance. Comment allez-vous récupérer C1 code> instance dans
autreclass code>? Si vous pouvez accéder à
C1 code> - vous pouvez également accéder à
programme.someclass code>.
Pourquoi faire ça? Vous pouvez le faire: someclass c1 = programme.someclass code>.
En supposant que vous souhaitiez atteindre quelque chose comme des macros en C / C ++ et que vous souhaitez également vous débarrasser du "programme" en tant que portée de nommage, je pense que vous ne pouvez pas le faire en C #. P>
C'est la vérité simple.
Non, en plus de créer un var local qui contient une référence à celui-ci.
Cette notion même est contre-intuitive, imho. Même si possible (parlant dans des termes non relatifs à des types de référence et à leurs alias potentiellement multiples »qui se produisent symptomatiquement), il ne pouvait que la maintenance du code plus problématique et que les gens écrivent suffisamment de code si! Cela appelle en quelque sorte un mécanisme qui est, si rien d'autre, surkill, je pense.
À quoi ça sert? Vous ne devriez pas taper tout cela à la main quand même; utiliser IntelliSense.
@Anonymous Coward: Même si vous n'aimez pas le code, la question est claire et légale. Je donne +1 pour annuler le bowvote
@cody: la question concerne à peu près la possibilité mec. Je sais que ce n'est pas utile.
+1, je pense que c'est une bonne question et pense qu'il n'ya aucun moyen de le faire, mais si c'était possible était drôle.