EnumBuilder. I need some Help !!!

cs_chessandmat Messages postés 23 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 13 février 2007 - 4 juil. 2003 à 09:42
cs_chessandmat Messages postés 23 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 13 février 2007 - 10 juil. 2003 à 14:08
Bonjour,
Je veux utiliser mon enumeration TestEnum (cf. code dessous) mais je ne sais pas comment faire.
Le module et l'assembly ne m'interresse pas. Suis-je obliger de les creer ?
Aidez moi svp, ca fait 3 jours que je suis bloque par cette enumeration dynamique
Merci d'avance pour votre aide.
chessandmat

Voici le code :

EnumBuilder _items;
AssemblyName an = new AssemblyName();
an.Name = "TestAssembly";
AssemblyBuilder ab = Thread.GetDomain().DefineDynamicAssembly(an,
AssemblyBuilderAccess.Save);
ModuleBuilder mb =
ab.DefineDynamicModule("TestModule","TestModule.mod");
EnumBuilder _items = mb.DefineEnum("TestEnum", TypeAttributes.Public,
typeof(int));
_items.DefineLiteral("none",0);
for (int indexDefaultScenario = 0 ; indexDefaultScenario < _projet.scenariiDefaut().Count ; indexDefaultScenario ++)
{
ObjetsMetiers.ScenarioDefaut defaultScenario = _projet.scenariiDefaut(indexDefaultScenario);
_items.DefineLiteral(defaultScenario.nom(), indexDefaultScenario + 1);
if (defaultScenario == _scenario.scenarioDefaut())
indexActualDefault = indexDefaultScenario;
}
_items.CreateType();
ab.Save("TestAssembly.dll");

2 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
7 juil. 2003 à 16:16
apres avoir creer ton enum avec EnumBuilder, tu fait simplement TestEnum.<element d'enumeration> pour avoir une valeur d'enum.
par contre si tu attends que l'intellisence fasse son effet faut pas y compter, la c'est du dynamique, il ne peut pas prevoir ce qu'y va etre créer.
0
cs_chessandmat Messages postés 23 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 13 février 2007
10 juil. 2003 à 14:08
En fait, je souhaite avoir une combo dans une PropertyGrid. Pour l'instant, je n'ai rien dans le champ Link. Voici la classe que j'utilise pour celui-ci :

private class AppSettingsScenario : AppSettings
{
private ObjetsMetiers.Projet _projet;
private ObjetsMetiers.Scenario _scenario;
private EnumBuilder _items;

public AppSettingsScenario(FormParentMdi form, ObjetsMetiers.Element element, ObjetsMetiers.Projet projet)
{
_element = element;
_parentMdi = form;
_projet = projet;
_scenario = ((ObjetsMetiers.Scenario)_element);

int indexActualDefault = 0;

AssemblyName an = new AssemblyName();
an.Name = "TestAssembly";
AssemblyBuilder ab = Thread.GetDomain().DefineDynamicAssembly(an, AssemblyBuilderAccess.Save);
ModuleBuilder mb = ab.DefineDynamicModule("TestModule","TestModule.mod");

EnumBuilder _items = mb.DefineEnum("TestEnum", TypeAttributes.Public, typeof(int));

_items.DefineLiteral("none",0);
for (int indexDefaultScenario = 0 ; indexDefaultScenario < _projet.scenariiDefaut().Count ; indexDefaultScenario ++)
{
ObjetsMetiers.ScenarioDefaut defaultScenario = _projet.scenariiDefaut(indexDefaultScenario);
_items.DefineLiteral(defaultScenario.nom(), indexDefaultScenario + 1);
if (defaultScenario == _scenario.scenarioDefaut())
indexActualDefault = indexDefaultScenario;
}

_items.CreateType();

ab.Save("TestAssembly.dll");
}

[CategoryAttribute("Link")]
public EnumBuilder Link
{
get
{
return _items;
}
set
{
_parentMdi.modifier();
_parentMdi.formTree().initArbreProperties();
}
}
}

En vous remerciant d'avance,
Cordialement
chessandmat
0
Rejoignez-nous