// 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()); } }