Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : TypeLoadException sur une énumération - Compact Framework .NET 2 [ Archives / .NET ] (neodante)

mardi 13 septembre 2005 à 11:57:05 | TypeLoadException sur une énumération - Compact Framework .NET 2

neodante

Administrateur CodeS-SourceS
Salut tout le monde,
bon je vais vous poser ma première colle en C# :

J'ai un programme qui tourne sous Compact Framework avec .NET 2 (target = Windows Mobile 5.0). La solution est découpée en 2 projets : librairie de classes + projet Form.

Le projet Form utilise la librairie de classes et marche très bien pour tout le reste, seulement voilà un jour :

Je crée un Dictionnary de type generics avec en paramètre un enum de ma fabrication (enum MouseAction), j'ai un message d'erreur lorsque la CLR instancie le Dictionnary :
An unhandled exception of type 'System.TypeLoadException' occurred in mscorlib.dll

Ce qui signifie que MouseAction n'a pas réussi à être chargé correctement. Si je change le type (exemple enum MouseButtons) ça marche. Donc cela semble être spécifique à mon code ou à mon projet ... :(

Le source est tel quel (dans le même fichier cs) :

namespace Toto.Titi
{
    [FlagsAttribute()]
    public enum MouseAction : byte
    {
        MOVE_LEFT = 1,
        MOVE_RIGHT,
        MOVE_UP,
        MOVE_DOWN,
        BUTTON_1
    }

    public sealed class InputManager
    {
        private Dictionary<Keys, GameAction> keyActions = new Dictionary<Keys, GameAction>(0);
        private Dictionary<MouseAction, GameAction> mouseActions = new Dictionary<MouseAction, GameAction>(5);

        private Point mouseLocation = new Point(-1, -1);
...

Voici la stack :

-    [External Code]   
-   Kubik Engine.dll!KubikEngine.Input.InputManager.InputManager(System.Windows.Forms.Form frm = {KubikEngine.Tutorial1.Form1}) Line 27 + 0x7 bytes    C#
-    Kubik Engine Tutorial 1 - Engine.exe!KubikEngine.Tutorial1.Form1.Form1() Line 22 + 0x7 bytes    C#
-    Kubik Engine Tutorial 1 - Engine.exe!KubikEngine.Tutorial1.Program.Main() Line 15 + 0x5 bytes    C#

Un petite éclair de génie serait la bienvenue :p

ciao et merci d'avance


mardi 13 septembre 2005 à 12:16:26 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

sebmafate

Membre Club Administrateur CodeS-SourceS
ca n'a surement rien à voir... mais à la place de [FlagsAttribute()] tu peux mettre [Flags]

sinon, ton code à l'air correct

Sébastien FERRAND

mardi 13 septembre 2005 à 12:21:53 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

neodante

Administrateur CodeS-SourceS
Effectivement j'avais même bougé l'attribut mais ça change vraiment rien ...

Ce n'est pas une erreur de syntaxe sinon VS m'enverrait boulé direct mais un truc que j'ai po du bien faire soit dans la conf du projet soit une théorie .NET que je n'ai pas encore vu ... :(

Quand je reprend ces quelques lignes de code et que je les mets dans un nouveau projet ça marche mais dans mon projet assez founi ça ne marche absolument pas. A mon avis il faut avoir été confronté à ça et avoir trouvé la soluce pour résoudre mon prob ... :(

Merci sebmafate ;-)


mardi 13 septembre 2005 à 16:15:58 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

Lutinore

Administrateur CodeS-SourceS
Salut, es tu sûr que c'est ton enum qui pose problème ( qui d'ailleurs n'utilise pas les puissances de 2 ! ) ? Le TypeLoadException pourrait peut être venir du fait qu'a la compilation et à l'execution ce n'est pas la même assembly qui est utilisée.

mardi 13 septembre 2005 à 19:12:49 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

sebmafate

Membre Club Administrateur CodeS-SourceS
qu'est ce qui te fait dire qu'il n'utilise pas les puissance de 2 ?


[FlagsAttribute()]
    public enum MouseAction : byte
    {
        MOVE_LEFT = 1, // 2^0
        MOVE_RIGHT, // implicite 2^1 = 2...
        MOVE_UP,
        MOVE_DOWN,
        BUTTON_1
    }


Sébastien FERRAND

mardi 13 septembre 2005 à 20:34:53 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

poppyto

Membre Club Administrateur CodeS-SourceS
J'ai déjà eu ce problème, les Framework ne sont pas en phases (vérifie que les versions soient exact, il y a eu une bonne pléiade de bêtas).
Eventuellemnt, installe celui livré sur le DVD.

[ Lien ] LE site pour les bassistes

mardi 13 septembre 2005 à 23:41:50 | Re : TypeLoadException sur une énumération - Compact Framework .NET 2

neodante

Administrateur CodeS-SourceS
J'ai installé la version livrée sur le DVD qui a été donné au MEDC à Paris il y a quelques temps donc je pense qu'elle doit être correcte. Néanmoins je crois que je vais voir pour downloader la dernière version, au pire ça continuera à ne pas marcher !

Pour le moment je ne vois qu'un prob d'assembly ou alors de Framework ... je vais tester ça demain avec une version plus fraîche si j'arrive à trouver !

Merci pour le coup de main ;-)

++




Cette discussion est classé dans : move, enum, dictionary, engine, kubikengine


Répondre à ce message

Sujets en rapport avec ce message

[C#] enum & int : faut caster ? [ par scoubidou944 ] Question 1:-------------[Flags] public enum E_gloAccountFlag : ushort{u0NoFlag = 0,u1Script = 1,u1AccountDisable = 2}uint uiMyFlag = 4;E_gloAccountFla Entrer les valeurs d'une enum dans une listbox [ par Strolh ] BonjourVoila, je voudrais savoir si il est possible de mettre automatiquement dans une ListBox, les différentes valeurs d'une Enum sachant que l'on ne Combox et Enum [ par Strolh ] Voila j'ai une enum de typeEnum monEnum{Valeur1=0,Valeur2,Valeur3}je veux mettre tous cela dans une ComboxBox de façon suivant :Valeur1,Valeur2 et Val lister une enum ? [ par jesusonline ] Bonjour, je voudrais faire un truc de ce style : public enum ArticleType { Articles = 1, News = 2, Astuces = 3 } void Savoir si c'est une Enum, et si oui, savoir le nom de l'enum [ par ricklekebekoi ] jai une fonticion qui va comme suit: private string ValueToString( <FONT color=#ff0000 size=2 Class, thread, Erreur.. [ par bip98 ] voilà mon code:class Axe_move {  //Attribu  private int i;  int[] v_moteur = new int[4];   //Constructeur  public Axe_move()   { &nbs [C#] Enum & ToString() [ par scoubidou944 ] Lorsque l'on a un enum,on peut avoir un code :MyEnum.MyElement.ToString ()Oki, ca marche mais si par exemple on voulait redéfinir le résultat pour obt [.NET][C#]Ajout méthode à un Enum [ par cedkat ] Bonjour.je voudrais savoir s'il était possible de rajouter des méthodes à un enum, si oui comment ?Merci CedKat Enum || mise en place d'une classe protocole [ par YOOP ] Bonjour,je cherche à metre en place un protocole de communication sur RS232 pour une application embarqué.Soit g deja la connexion, une partie de l'in DataGridComboBox with Enum [ par maldor ] Salut, J'ai passé un long moment à chercher un DataGridComboBoxStyle... J'ai pu en trouver un grand nombre, mais aucun d'entre eux ne m'a permis de f


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,31 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.