WPF C# 怎么用泛型和反射创建一个通用把字符串转换成指定泛型的类型
可以使用以下方法来创建一个通用的字符串转换成指定泛型类型的方法:
- 创建一个泛型方法,该方法接受一个字符串参数和一个 Type 参数,该 Type 参数指定要转换的泛型类型。
public static T ConvertStringToType<T>(string input, Type type)
{
// TODO: Implement conversion logic
}
- 在该方法中,使用反射创建一个泛型类型的实例。
T instance = (T)Activator.CreateInstance(type);
- 使用 TypeDescriptor 类中的 ConvertFrom 方法将字符串转换为指定类型的值。
T value = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(input);
- 将转换后的值设置为泛型类型的实例的属性或字段。
PropertyInfo property = type.GetProperty("Value");
property.SetValue(instance, value);
完整代码如下:
public static T ConvertStringToType<T>(string input, Type type)
{
T instance = (T)Activator.CreateInstance(type);
T value = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(input);
PropertyInfo property = type.GetProperty("Value");
property.SetValue(instance, value);
return instance;
}
使用示例:
string input = "123";
int value = ConvertStringToType<int>(input, typeof(Nullable<int>));
Console.WriteLine(value); // Output: 123
``
原文地址: https://www.cveoy.top/t/topic/cSak 著作权归作者所有。请勿转载和采集!