// Memorizza in _editingProperties tutte le proprietà editable private void InitializeEditingProperties() { // Per ogni proprietà pubblica di EditingObject alla quale è stato associato l’attributo Editable: // se la proprietà è write-only, sollevare un’eccezione; // creare una nuova EditingProperty sulla proprietà e aggiungerla alla collezione _editingProperties; // visualizzare nella finestra di output del debugger la descrizione completa dell'EditingProperty // ad esempio: "Add EditingProperty Titolo {Label = Titolo, Width = 100} OriginalValue = TitoloLibro_1" Type type = EditingObject.GetType(); foreach (PropertyInfo propertyInfo in type.GetProperties()) { EditableAttribute[] attributes = (EditableAttribute[])propertyInfo.GetCustomAttributes(typeof(EditableAttribute), false); if (attributes.Length == 0) { continue; } if (!propertyInfo.CanRead) { throw new ApplicationException("Attributo editable non applicabile"); } EditingProperty editingProperty = new EditingProperty(propertyInfo, attributes[0], EditingObject); _editingProperties.Add(editingProperty); Console.WriteLine("Add EditingProperty " + editingProperty.ToString()); } }
// Memorizza in _editingProperties tutte le proprietà editable private void InitializeEditingProperties() { // Per ogni proprietà pubblica di EditingObject alla quale è stato associato l’attributo Editable: // se la proprietà è write-only, sollevare un’eccezione; // creare una nuova EditingProperty sulla proprietà e aggiungerla alla collezione _editingProperties; // visualizzare nella finestra di output del debugger la descrizione completa dell'EditingProperty // ad esempio: "Add EditingProperty Titolo {Label = Titolo, Width = 100} OriginalValue = TitoloLibro_1" Type t = EditingObject.GetType(); foreach (PropertyInfo p in t.GetProperties()) { if ((p.GetCustomAttributes(typeof(Model.EditableAttribute), false).Length > 0)) { if (p.CanWrite && !p.CanRead) { throw new ArgumentException("public editable property can not be write only"); } EditingProperty ep = new EditingProperty(p, (Model.EditableAttribute)p.GetCustomAttributes(typeof(Model.EditableAttribute), false)[0], EditingObject); _editingProperties.Add(ep); Console.WriteLine(ep.ToString()); } } }