Wie kann ich dies beheben, um eine generische Konvertierung in Nullable & lt; T & gt;

Derzeit benutze ich dieses praktischen Umbau-Erweiterung-Methode, um Konvertierungen zwischen Typen:

    public static T To<T>(this IConvertible obj)
    {
        return (T)Convert.ChangeType(obj, typeof(T));
    }

Allerdings nicht, wie das konvertieren gültige Werte um null-Werte zulässt, zum Beispiel, dies schlägt fehl:

    "1".To<int?>();

Natürlich, 1 ist einfach in eine (int?), aber es kommt die Fehlermeldung:

    Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

Dies ist ein offensichtlich Vereinfachtes Beispiel, in Wirklichkeit bin ich es verwenden, um Konvertierungen von string-Typen in etwa so:

packageDb.Quantity = package.package.ElementDeep(Namespace + "PackageQuantity", Namespace + "ActualQuantity", Namespace + "Quantity").ValueOrNull().To<int?>();

Wenn Konvertieren.ChangeType nicht wie null-Werte zulassen, jemand irgendwelche tollen Ideen?

InformationsquelleAutor der Frage TheSoftwareJedi | 2009-04-27

Schreibe einen Kommentar