11
votes

Méthodes dans l'espace de noms C #

Y a-t-il un moyen d'appeler une fonction à l'intérieur d'un espace de noms sans déclarer la classe à l'intérieur du C #.

Par exemple, si j'avais 2 méthodes exactement identiques et que vous devriez être utilisée dans tous mes projets C #, y a-t-il un moyen de simplement prendre ces fonctions et de la faire dans une DLL et de simplement dire «à l'aide de MyTwomethods» sur haut et commencez à utiliser les méthodes sans déclarer la classe?

En ce moment, je fais: Myclass.mymethod ();

Je veux faire: Mymethod ();

merci, Rohit


0 commentaires

4 Réponses :


2
votes

dépend du type de méthode que nous parlons, vous pouvez examiner les méthodes d'extension:

http://msdn.microsoft.com/en-us/library/ bb383977.aspx

Cela vous permet d'ajouter facilement des fonctionnalités supplémentaires aux objets existants.


0 commentaires

15
votes

Vous ne pouvez pas déclarer des méthodes en dehors d'une classe, mais vous pouvez le faire à l'aide d'une classe d'assistance statique dans un projet de bibliothèque de classe. XXX PRE>

Utilisation (après avoir ajouté une référence à votre classe. Bibliothèque). P>

HelperClass.HelperMethod();


3 commentaires

Existe-t-il un moyen d'appeler "Méthode d'assistance ()" sans la classe d'assistance?


Il n'y a pas. Les méthodes doivent être contenues dans une classe ou une structure.


Si vous déclarez à l'aide de Static HelperClass , vous pouvez appeler helpermethod ()



3
votes

Suite à partir de la suggestion d'utiliser des méthodes d'extension, vous pouvez définir la méthode une méthode d'extension éteinte de System.Object, à partir de laquelle toutes les classes dérivent. Je ne préconiserais pas cela, mais ce qui se rapporte à votre question, cela peut être une réponse.

namespace SomeNamespace
{
    public static class Extensions
    {
      public static void MyMethod(this System.Object o)
      {
        // Do something here.
      }
    }
}


2 commentaires

Je ne suis pas capable d'accéder à MyMethod sans appeler 'extensions.mymeThod ()' dans mon form_load d'une autre classe. Merci quand même.


Cela semblait vraiment cool jusqu'à ce que je me souvienne que la fonction principale de C # soit nécessaire pour être statique.



31
votes

Mise à jour pour 2015: Non, vous ne pouvez pas créer de "fonctions libres" dans C #, mais en commençant par C # 6, vous pourrez appeler des fonctions statiques sans mentionner le nom de la classe. C # 6 aura l'entité "Utilisation statique" permettra à cette syntaxe: < Pré> xxx

quelque therdfile.cs: xxx


0 commentaires