L'ajout de constructeur (ou de fonction) enum

Je ne suis pas sûr si un constructeur est exactement ce que je cherche, mais si j'explique ce que je suis en train de faire j'espère que quelqu'un peut me dire si je suis en train de faire est une idée stupide ou si il y a des façons de le faire.

J'ai donc une enum:

public enum MessageType
{
    Normal, 
    Error, 
    Chat, 
    Groupchat, 
    Headline
}

Cette enum est fondamentalement un wrapper pour le jabber.net MessageType. Donc, je veux créer mon enum. Donc pour le moment j'ai une fonction comme ceci:

private MessageType ConvertMessageType(JabberMessageType jabberType)
{
    MessageType type = MessageType.Error;

    switch (jabberType)
    {
        case JabberMessageType.normal:
            type = MessageType.Normal;
            break;

        //etc
    }

    return type;
}

J'ai donc utiliser enum MessageType type = ConvertMessageType(JabberMessageType.groupchat);

Ce que je voudrais, cependant, est de pouvoir faire quelque chose comme:

enum MessageType type = MessageType(JabberMessageType.groupchat);
//or 
enum MessageType type = MessageType.FromJabberJid(JabberMessageType.groupchat);

De sorte que la conversion appartient à l'enum plutôt que d'être une méthode outtside de.

Si le sous-jacent ints dire la même chose, alors vous pouvez affecter directement comme JabberMessageType.normal 0 est égal à MessageType.Normal( 0) et autres ....MessageType type = (MessageType type) jabberType
Faire de valeurs de corrélation entre l'un de l'autre à travers les énumérations? Si oui, vous n'avez pas besoin de "convertir", mais juste fonte.
En Java, vous pouvez le faire, à la fois la définition d'un constructeur et non méthode statique. Ici, votre seule option est de créer une extension.
Le Casting est bien sûr possible, mais je ne voudrais pas faire ce qu'il n'est pas certain que les valeurs restent les mêmes et à l'avenir des cas, il pourrait être qu'ils ne le sont pas. C'est aussi que j'ai été très intéressé par ce qui est réellement possible en C#

OriginalL'auteur Firedragon | 2011-11-10