2
私は辞書を持っています。私はそれをループ内のクラスの現在のデータ型にキャストしたいと思います。データ型にキャストする拡張文字列
public static T ToClass<T>(this IDictionary<string, string> source) where T : class, new()
{
Type type = typeof(T);
T ret = new T();
foreach (var keyValue in source)
{
type.GetProperty(keyValue.Key).SetValue(ret, keyValue.Value.ToNullable<T>(), null);
}
return ret;
}
public static Nullable<T> ToNullable<T>(this string s) where T : struct
{
Nullable<T> result = new Nullable<T>();
try
{
if (!string.IsNullOrWhiteSpace(s))
{
TypeConverter conv = TypeDescriptor.GetConverter(typeof(T));
result = (T)conv.ConvertFrom(s);
}
}
catch { }
return result;
}
ないHOWTOはkeyValue.Value.ToNullable<T>()
が動作することを確認してください、私はそれがループ内の現在のプロパティのデータ型にキャストします。
この例ではどのように行われていますか?
私はこのコードを試しましたが、うまく動作しません。
public static T TestParse<T>(this string value)
{
return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}
あなたToNullableは、すべてのプロパティを含むターゲットクラスのタイプであること、正しくないTタイプを使用しています。各プロパティの型を使用する必要があります(残念ながら、辞書にはありません)。 – Strillo
あなたはそれをnull値ではない変換方法にする例がありますか? –