9
votes

Comment obtenir une valeur ENUM d'un assembly à l'aide de la liaison tardive dans C #

J'ai une application C # 3.0 WinForms qui est occasionnellement nécessaire pour contrôler Excel avec l'automatisation. Cela fonctionne bien avec une liaison précoce normale, mais j'ai eu des problèmes lorsque les gens n'ont pas d'excès installé mais que je souhaite toujours utiliser mon application à l'exception de la partie Excel. La reliure tardive semble être une solution à cela. La reliure tardive est plutôt fastidieuse au C # 3 mais je ne fais rien particulièrement difficile. Je suis suivant http://support.microsoft.com/kb/302902 en tant que démarreur et Cela fonctionne bien.

Ma question est de savoir comment puis-je utiliser un énumé par nom?

par exemple, comment puis-je utiliser la réflexion pour obtenir la valeur de microsoft.office.interop.excel.xlfileformat.xltextwindows afin que je puisse l'utiliser un invokemethod appel?

Je sais que le moyen le plus simple est probablement de créer mon propre énorme local avec la même valeur entière "magique", mais il serait plus agréable de pouvoir y accéder par son nom. Les docs ne listent souvent pas de la valeur pour que je puisse l'obtenir, j'ai probablement besoin d'avoir une petite application de test lié au début qui peut me dire la valeur.

merci


1 commentaires

Comment avez-vous obtenu l'objet Assembly Excel dans le code? J'utilise aussi une liaison tardive et si je reçois le type d'un des objets Excel que j'ai dit qu'ils viennent de MSCorLib parce qu'ils sont des objets COM.


3 Réponses :


0
votes

serait Enum.parse aide? Par exemple xxx


2 commentaires

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement des liaisons peuvent devenir invalides si la page liée change. - de l'avis


@ YohdeadFall Merci, a ajouté un exemple.



0
votes

Compte tenu de l'exemple suivant:

foreach (var enumValue in typeof(Test).GetEnumValues())
{
    string name = enumValue.ToString();
    int value = (int) enumValue;
}


0 commentaires

15
votes

Les valeurs ENUM sont des champs considérés afin que vous puissiez utiliser la méthode type.getfield code> pour obtenir la valeur d'une option d'énumération via la réflexion.

Un exemple condensé: P>

// Bar|5


0 commentaires