LaPatte81
Messages postés4Date d'inscriptionvendredi 28 mars 2008StatutMembreDernière intervention31 mars 2008
-
28 mars 2008 à 17:25
Ayine
Messages postés4Date d'inscriptionmardi 13 février 2007StatutMembreDernière intervention 1 décembre 2008
-
1 déc. 2008 à 09:15
Bonjour,
Voila mon problème.
J'ai dévellopé une appli en F#, et je dévellope l'interface en C#.
Mon problème est le suivant, j'importe ma dll F# sans problèmes, et j'ai acces a mes fonctions et aux types que j'ai créés aussi.
Par contre impossible d'acceder aux variables ( publiques bien sur), elles sont reconnues et je n'ai pas de probleme pour compiler mon appli C#.
Par contre a l'exécution je tompe sur l'exception "System.TypeInitializationException".
Est-ce que quelqu'un a une idée pour résoudre ou contourner ce problème.
LaPatte81
Messages postés4Date d'inscriptionvendredi 28 mars 2008StatutMembreDernière intervention31 mars 2008 29 mars 2008 à 16:14
Bonjour,
Effectivement je viens de em relire sans mon code sous le nez, je comprends que ca puisse etre un peu obscur.
Jen'as pas les sources sous la main mais en gros je pourrai résumer le probleme de cette facon :
Dans le F#
exemple.fs :
type couple_a = (string , int )
let valeur_test = ("test",0)
exemple.fsi (signature) :
type couple_a = (string * int)
val valeur_test : couple_a
Je compile tout ca dans une dll que j'ajoute en référence dans mon projet C#.
Et dans mon code C# je peux créer des nouveaux couple_a sans probleme, et je peux acceder a b. Mais a l'execution losrque j'accede a b je tombe sur mon erreur d'initialisation :
(exemple.couple_a) b = new (exemple.couple_a)(); -> ca ca marche
b = exemple.valeur_test; -> ca compile mais ca plante systematiquement a l'execution.
J'epere avoir été plus clair. Si ce n'est pas le cas, je posterai une partie de mon code lundi.
ecosmose
Messages postés46Date d'inscriptionvendredi 5 novembre 2004StatutMembreDernière intervention30 septembre 2010 30 mars 2008 à 16:31
Salut,
le type couple_a possède un couplet d'attributs
Peut etre te faut il redéfinir l'opérateur d'affectation = car le programme ne fait quelles sont les opérations à effectuer lors de l'affectation..
As tu essayé ca :
couple_a = (string , int )
let couple_a valeur_test = ("test",0) //déclaration que la variable valeur_test est de type couple_a
ou encore
(exemple.couple_a) b = new (exemple.couple_a)(); -> ca ca marche
b[0] = exemple.valeur_test[0];
b[1] = exemple.valeur_test[1];
ou alors
b.string = exemple.valeur_test.string;
b.int = exemple.valeur_test.int;
Enfin je ne connais F# donc ceci n'est peut etre pas une bonne remarque...
Bonne recherche
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
LaPatte81
Messages postés4Date d'inscriptionvendredi 28 mars 2008StatutMembreDernière intervention31 mars 2008 31 mars 2008 à 10:27
Bonjour,
Oui,oui j'ai essayé ca. Mes types sont beaucoup plus compliqués que ce que j'ai mis en exemple, et je ne m'en sortirai pas si toutes les variables n'étaient pas typées ;).
C'est un peu plus compliqué puisque dans l'object browser, je retrouve tous les objects que j'ai mis dans ma dll. Et ils sont typés correctement.
Si j'importe ma dll dans un autre programme F#, tout marche comme prévu. C'est vraiment dans le passage au C# que ce trouve mon problème.
Tout ca compile bien. Ma table de hachage possède les bons attributs soit {get}.
Mais je tombe sur ce problème d'initilisation.
Peut etre faut il que j'utilise ce get, mais je ne sais pas comment faire. J'ai essayer de l'incorporer à mon code F# mais ca ne change rien.
Dans tous les cas merci de tenter de m'aider.
++
LaP@tte.
Vous n’avez pas trouvé la réponse que vous recherchez ?