Venerdì ho proposto una soluzione per non perdere determinati automatismi quando si lavora con il Profile e ad esempio controlli tipo FormView.
La soluzione è realizzare un ProfileDataSorce, per chi ha dato un occhiata al codice, si sarà reso contro che tutto il meccaniscmo funziona finche le proprietà del Profile rimangano stringhe.
Abbastanza limitativa come limitazione
Al fini di poter utilizzare tutti i tipi primitivi è sufficente creare un metodo che si occupa di recuperare il converter adatto.
private object ConvertType(Object value, Type type) { if ((value != null) && !type.IsInstanceOfType(value)) { string text = value as string; if (text != null) { TypeConverter converter = TypeDescriptor.GetConverter(type); if (converter == null) { return value; } try { return converter.ConvertFromInvariantString(text); } catch (NotSupportedException) { throw new InvalidOperationException(string.Format("impossibile convertire nel tipo {0}, tipi non compatibili", type.FullName)); } catch (FormatException) { throw new InvalidOperationException(string.Format("impossibile convertire nel tipo {0}, formato non valido",type.FullName)); } } else { return text; } } return value; }
e modificare ad esempio il metodo ExecuteUpdate così:
protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) { foreach (DictionaryEntry item in values) { _profile[item.Key.ToString()] = ConvertType(values[item.Key.ToString()], _profile[item.Key.ToString()].GetType()); } _profile.Save(); return 0; }
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Modificare il controllo TreeView, il 2 dicembre 2008 alle 19:27
- Un DataSource per il Profile, il 10 ottobre 2008 alle 15:06
- TrueSpace 7 gratuito, il 24 luglio 2008 alle 10:59
- adesso dico la mia sull'Iphone, il 22 luglio 2008 alle 10:33
- Come tutto ebbe inizio, il 21 luglio 2008 alle 09:22