//  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());
            }
        }
示例#2
0
        //  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());
                }
            }
        }