私は現在、この便利な変換拡張メソッドを使用して、タイプ間の変換を行っています。
public static T To<T>(this IConvertible obj)
{
return (T)Convert.ChangeType(obj, typeof(T));
}
ただし、有効な値をNullableに変換することは好きではありません。たとえば、これは失敗します。
"1".To<int?>();
明らかに、1は簡単に(int?)に変換されますが、エラーが発生します。
Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.
これは明らかに単純化された例です。実際には、次のような文字列タイプからの変換を行うために使用しています。
packageDb.Quantity = package.package.ElementDeep(Namespace + "PackageQuantity", Namespace + "ActualQuantity", Namespace + "Quantity").ValueOrNull().To<int?>();
Convert.ChangeTypeがNullableを好まない場合、誰か素晴らしいアイデアがありますか?