Je rencontre toutes sortes de problèmes avec [FlagsAttribute] enums dans Matlab. Il semble qu'il n'y ait aucun moyen de transmettre une combinaison de valeurs en tant que paramètre à .NET. Par exemple, BindingFlags.Public | BindingFlags.Instance, une fois que vous les combinez dans Matlab, ils deviennent de type interne et ne peuvent pas être convertis en BindingFlags.Matlab 2009b & .NET
choses comme
import System.*;
import System.Reflection.*;
flags = BindingFlags.Public+BindingFlags.Instance;
enum = Enum.ToObject(Type.GetType('System.Reflection.BindingFlags'), int32(flags));
ou
enum = Enum.Parse(Type.GetType('System.Reflection.BindingFlags'), 'Public, Instance');
ne fonctionnent tout simplement pas comme il se lit comme suit:
??? Un ou plusieurs arguments de sortie non affectés lors de l'appel à "System.Enum.ToObject" (ou "System.Enum.Parse").
D'autre part
enum = Enum.Parse(Type.GetType('System.Reflection.BindingFlags'), 'Public');
fonctionne très bien et retourne < System.Reflection.BindingFlags 1x1> Déf 'Public'.
Cela va, il va sans dire, pour tous les enums [FlagsAttribute].
Ai-je oublié quelque chose ici? Écrire une enveloppe de réflexion C# pour Matlab n'est pas un gros problème, mais cela ralentirait énormément les choses. Toute solution de contournement serait profondément, profondément appréciée.
Malheureusement, ce n'est pas comment j'ai décrit le problème. Tout votre code est en C#. Tout mon code est dans Matlab (c'est pourquoi nommer une variable "enum" est complètement légitime). Alors, s'il vous plaît, lisez attentivement ma question. Il n'y a pas d'eau dedans. Appréciez votre contribution quand même. – jbarr
Oh, oui, et merci d'avoir correctement formulé ma question en premier lieu. J'espère qu'une fois que vous prendrez un second regard, vous pourrez m'aider. – jbarr
Oh bien. Deuxième essai. La fonction "EnumToObject" crée et retourne un tableau de cellules mais n'effectue pas la tâche en question: mettre un objet enum à une valeur "20" ou toute autre combinaison de drapeaux (par opposition à un seul drapeau, comme "Public") de Matlab . – jbarr