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

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 13 sept. 2005 à 11:57
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 13 sept. 2005 à 23:41
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
13 sept. 2005 à 12:16
ca n'a surement rien à voir... mais à la place de [FlagsAttribute()] tu peux mettre [Flags]



sinon, ton code à l'air correct

Sébastien FERRAND
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
13 sept. 2005 à 12:21
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 ;-)
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
13 sept. 2005 à 16:15
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.
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
13 sept. 2005 à 19:12
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
13 sept. 2005 à 20:34
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
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
13 sept. 2005 à 23:41
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 ;-)



++
0