public MariniImpiantoDataManager(string filename, IMariniSerializer serializer, List<IMariniEventHandler> eventHandlerList) { // TODO: Una qualche validazione del filename? Magari con metodo apposito, o oggetto validatore esterno // TODO: una qualche validazione dell'XML? Magari con metodo apposito o con oggetto validatore esterno (vedi XSD) XmlDocument doc = new XmlDocument(); doc.Load(filename); XmlNode root = doc.SelectSingleNode("*"); MariniBaseObject dataTree = (MariniBaseObject)MariniObjectCreator.CreateMariniObject(root); _Initialize(dataTree, serializer, eventHandlerList); }
/// <summary> /// Initialize the MariniImpiantoDataManager. Sets the mariniImpiantoDataTree and populate the Dictionaries /// </summary> /// <param name="mariniImpiantoDataTree"></param> private void _Initialize(MariniBaseObject dataTree, IMariniSerializer serializer, List<IMariniEventHandler> eventHandlerList) { // TODO Faccio cosi' o uso un setter??? this._dataTree = dataTree; this._serializer = serializer; this._eventHandlerList = eventHandlerList; _InitializeDictionaries(); //foreach (IMariniEventHandler mariniEventsHandler in this._eventHandlerList) //{ // _SubscribeEvents(mariniEventsHandler); //} _SubscribeEvents(); }
//Nei costruttori faccio Dependency Injection / Inversion of Control, ovvero sposto il codice su oggetti esterni. public MariniImpiantoDataManager(MariniBaseObject dataTree, IMariniSerializer serializer, List <IMariniEventHandler> eventHandlerList) { _Initialize(dataTree, serializer, eventHandlerList); }