J'essaie de faire en sorte que Unity gère la création de mes objets et je souhaite avoir des paramètres d'initialisation qui ne sont pas connus avant l'exécution:
Pour le moment, la seule façon dont je pourrais penser à la façon de le faire est d'avoir une méthode Init sur l'interface.
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
Ensuite, pour l'utiliser (dans Unity), je ferais ceci:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
Dans ce scénario, le runTimeParam
paramètre est déterminé au moment de l'exécution en fonction de l'entrée utilisateur. Le cas trivial ici renvoie simplement la valeur de runTimeParam
mais en réalité le paramètre sera quelque chose comme le nom de fichier et la méthode d'initialisation fera quelque chose avec le fichier.
Cela crée un certain nombre de problèmes, à savoir que la Initialize
méthode est disponible sur l'interface et peut être appelée plusieurs fois. Définir un indicateur dans l'implémentation et lancer une exception lors d'un appel répété à Initialize
semble trop maladroit.
Au moment où je résous mon interface, je ne veux rien savoir de l'implémentation de IMyIntf
. Ce que je veux, cependant, c'est savoir que cette interface a besoin de certains paramètres d'initialisation ponctuels. Existe-t-il un moyen d'annoter (attributs?) L'interface avec ces informations et de les transmettre au framework lorsque l'objet est créé?
Edit: décrit un peu plus l'interface.
runTimeParam
est une dépendance déterminée lors de l'exécution en fonction d'une entrée utilisateur. L'alternative devrait-elle être de la diviser en deux interfaces - une pour l'initialisation et une autre pour stocker les valeurs?