J'ai type personnalisé nommé LocalizedString et je dois mettre en œuvre l'interface IConvertible depuis quand nous SERIALIZE types à notre DB, nous utilisons Convert.ChangeType et je ne peux pas changer cette partie du code.implémentant l'interface IConvertible
Ce que je fait est que je mis en œuvre:
string IConvertible.ToString(IFormatProvider provider)
{
return string.Format(this.ToString());
}
object IConvertible.ToType(Type conversionType, IFormatProvider provider)
{
return Convert.ChangeType(this.ToString(), conversionType);
}
public TypeCode GetTypeCode()
{
return TypeCode.Object;
}
et je quittais toutes les autres méthodes avec NotImplementedException depuis que je n'ai pas de conversions raisonnables pour d'autres types. (Je vais finir par faire les jeter InvalidCastException, mais c'est une autre histoire.)
Cependant, je reçois encore quand j'invoque Convert.ChangeType(val, pr.__property.PropertyType)
où val = ""
, pr.__property.PropertyType = {Name = "LocalizedString" FullName = "Sampo.CMS.LocalizedString"}
Code avec crashe:
non valide cast de « System.String 'à' Sampo.CMS.LocalizedString '.
De quoi ai-je besoin pour en faire plus? Je suis coincé.