sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 20 févr. 2007 à 15:56
:)
Bidou : 1, Warny : 0
J'adore ;)
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 20 févr. 2007 à 15:54
Oups, tu as raison, l'erreur venait d'ailleurs dans mon code, c'est corrigé.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 20 févr. 2007 à 14:35
Mais noooooon, Insert est une méthode privée du Dictionnary, utilisée (entre autre) par l'indexeur.
Pour te convaincre que l'indexeur ajoute bien l'élément dans le dictionary, créer une application console et met ceci dedans :
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 20 févr. 2007 à 11:08
Bidou -> Après que tu me l'ais dit... j'ai testé, il est indispensable, si je n'utilise pas ces lignes de code l'objet n'est pas integré à ma collection.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 20 févr. 2007 à 10:06
"Pour le test d'existence, il est indispensable."
Non, tu peux bel et bien faire le remplacement que j'ai indiqué plus haut, simplement: creatable[value] = type;
L'indexeur se charge de tout...
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201437 20 févr. 2007 à 09:39
Alors qu'il suffit d'écrire :
public Loader() : this("") { }
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 20 févr. 2007 à 07:44
Merci pour tes remarques, je vais mettre en place une vraie exception dans le createinstance (le plantage est voulu). Pour le test d'existence, il est indispensable.
Sinon, pour la création des plugins, il est clair que des interfaces c'est bien, mais certains objets ont parfois une activité dont on ne peut pas se passer. Même dans ce cas, il faut pouvoir charger ces objets, si on doit tout recompiler, ce n'est pas très interressant, c'est l'utilité de mon programme.
L'idée de base était de reprendre ma source client DNS et de pouvoir l'étendre à l'envie en rajoutant des extensions sans modifier le programme de base comme je dois le faire aujourd'hui.
Or, pour celle-ci, je reçois un numéro de service que je dois interpréter. Comme je ne vais pas utiliser le numéro de service pour nommer mes classes (mais bien le nom du service) il fallait que je trouve une solution... la voici.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 19 févr. 2007 à 21:17
Quelques remarques:
- Méthodes AddType(Type type) de Loads.cs
if(KeyElement.Lenght > 0) devrait plutôt être string.IsNullOrEmpty(KeyElement)
Si on passe une valeur inexistante dans le loader.Create, le program bug. Il faut faire un teste dans la méthode qui fait le CreateInstance (si je ne spécifie pas defaultElement, il est null => plantage)
Autre chose, 'value' est un mot clef, c'est pas recommandé de l'utiliser comme nom de variable.
Sinon pour la création des Plugins, je me demande si c'est pas plus indiqué de passer par des interfaces plutôt que Reflexion...
A voir.
20 févr. 2007 à 15:56
Bidou : 1, Warny : 0
J'adore ;)
20 févr. 2007 à 15:54
20 févr. 2007 à 14:35
Pour te convaincre que l'indexeur ajoute bien l'élément dans le dictionary, créer une application console et met ceci dedans :
Dictionary dic = new Dictionary();
dic[1] = "Okay"; // Count 1 1-Okay
dic[2] = "Salut"; // Count 2 1-Okay 2-Salut
dic[2] = "Teste"; // Count 2 1-Okay 2-Teste
20 févr. 2007 à 14:08
20 févr. 2007 à 11:37
public void set_Item(TKey key, TValue value)
{
this.Insert(key, value, false);
}
20 févr. 2007 à 11:08
20 févr. 2007 à 10:06
Non, tu peux bel et bien faire le remplacement que j'ai indiqué plus haut, simplement: creatable[value] = type;
L'indexeur se charge de tout...
20 févr. 2007 à 09:39
public Loader() : this("") { ;}
Alors qu'il suffit d'écrire :
public Loader() : this("") { }
20 févr. 2007 à 07:44
Sinon, pour la création des plugins, il est clair que des interfaces c'est bien, mais certains objets ont parfois une activité dont on ne peut pas se passer. Même dans ce cas, il faut pouvoir charger ces objets, si on doit tout recompiler, ce n'est pas très interressant, c'est l'utilité de mon programme.
L'idée de base était de reprendre ma source client DNS et de pouvoir l'étendre à l'envie en rajoutant des extensions sans modifier le programme de base comme je dois le faire aujourd'hui.
Or, pour celle-ci, je reçois un numéro de service que je dois interpréter. Comme je ne vais pas utiliser le numéro de service pour nommer mes classes (mais bien le nom du service) il fallait que je trouve une solution... la voici.
19 févr. 2007 à 21:17
- Méthodes AddType(Type type) de Loads.cs
if(KeyElement.Lenght > 0) devrait plutôt être string.IsNullOrEmpty(KeyElement)
- Dans la même méthode:
if (creatable.ContainsKey(value))
{
creatable[value] = type;
}
else
{
creatable.Add(value, type);
}
peut-etre remplacé par
creatable[value] = type;
Si on passe une valeur inexistante dans le loader.Create, le program bug. Il faut faire un teste dans la méthode qui fait le CreateInstance (si je ne spécifie pas defaultElement, il est null => plantage)
Autre chose, 'value' est un mot clef, c'est pas recommandé de l'utiliser comme nom de variable.
Sinon pour la création des Plugins, je me demande si c'est pas plus indiqué de passer par des interfaces plutôt que Reflexion...
A voir.