Perfezioniamo il ProfileDataSorce

di Marco Leoncini, in asp.net,

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 limitazionesmile_teeth

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; 
}
Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese