TypeLoadException sur une énumération - Compact Framework .NET 2

Signaler
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
-
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
-
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

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
ca n'a surement rien à voir... mais à la place de [FlagsAttribute()] tu peux mettre [Flags]



sinon, ton code à l'air correct

Sébastien FERRAND
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 ;-)
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
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.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

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.

http://www.poppyto.net LE site pour les bassistes
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 ;-)



++