Version plus rapide de Convert.ChangeType

Dans une application que j'ai, je fais assez souvent des appels à Convert.ChangeType afin de convertir une valeur d'un chargé dynamiquement type.

Cependant, après profilage avec des FOURMIS, j'ai trouvé que cette Convert.ChangeType semble prendre une partie significative de temps (en raison d'être appelé très souvent). Quelqu'un aurait-il une alternative plus rapide à faire cela?

À ce point, j'ai un type d'objet contenant la cible, et un string contenant la valeur.

Ce qui suit est le code incriminé. J'envisage de faire un interrupteur d'instruction sur le type (puisque c'est une collection limitée de types) et de l'appel de l'analyse des méthodes, même si je ne suis pas sûr de savoir si ou non ce sera plus rapide.

if(attributeRow["Value"]!=DBNull.Value)
    sample[attr] = attr.AttributeType == typeof(Guid)
                 ? new Guid(attributeRow["Value"].ToString())
                 : (IComparable)Convert.ChangeType(attributeRow["Value"],attr.AttributeType);

source d'informationauteur Erich