7
votes

Ajouter une nouvelle propriété à la classe C #

Je me demande s'il est possible d'ajouter une nouvelle propriété en tant que propriété d'extension à la classe de cordes. Ce que je cherche, c'est quelque chose comme ça xxx

Je voudrais faire une extension, ex: xxx

puis-je ajouter une extension Propriétés à la chaîne C # Classe que je peux appeler de manière similaire, comme lorsque je fais string.empty?


4 commentaires

Non, vous ne pouvez pas ajouter une méthode d'extension statique car les méthodes d'extension nécessitent une instance d'un objet.


oublie ça . Jon dit son impossible Stackoverflow.com/questions/1676191/... :)


@Cybernate: Il est correct que vous ne pouvez pas ajouter une méthode d'extension statique, mais ce n'est pas parce qu'une méthode d'extension nécessite une instance. Vous avez seulement besoin d'une référence du type correct, mais la référence peut être null.


Comment "quelque chose" .DisplaynoneNone a-t-il un sens? L'utilisateur de votre code sera mystifié pour toujours pourquoi "rien" .Displaynone renvoie exactement la même chose. Comprenez la différence entre les propriétés statiques et des instances.


3 Réponses :


4
votes

Ouais, vous pouvez le faire .. Cependant, il s'agira d'une méthode d'extension, pas d'une propriété.

public static StringHelper
{
    public static string DisplayNone()
    {
        return "blah";
    }
}


1 commentaires

Non, appeler une méthode d'extension ne nécessite pas d'instance de la classe. Vous avez seulement besoin d'une référence du bon type, mais la référence peut être null.



4
votes

Vous ne pouvez créer que des extensions pour des objets ...

Quelque chose comme ça: xxx

mais je n'ai jamais vu comment vous pouvez prolonger une structure ou une classe qui n'a jamais été initialisé.


0 commentaires

0
votes

Vous pourriez peut-être créer votre propre type de valeur. Qui imite la chaîne de type avec une méthode "displayName".

Cependant, je ne vois pas pourquoi vous avez besoin de "displayName" sur le type? Cela a plus de sens sur l'instance de piqûre. C'est à dire. "Bonjour" .DisplayName. Voir la réponse de Smokefoot à cette question.


0 commentaires