使用TypeConverter.ConvertFromString()解析自定义格式的字符串

本文关键字:自定义 格式 字符串 TypeConverter ConvertFromString 使用 | 更新日期: 2023-09-27 18:10:46

使用TypeConverter.ConvertFromString(),我需要在从字符串解析数据时提供自定义格式(例如,使用DateTime: "ddMMyyyy""MMMM dd, yyyy")。

TypeConverter.ConvertFromString()有以下过载:

public object ConvertFromString(ITypeDescriptorContext context, 
                                CultureInfo culture, 
                                string text);

我在MSDN上查了ITypeDescriptorContext

ITypeDescriptorContext接口提供上下文信息关于组件。ITypeDescriptorContext通常在设计时使用提供有关设计时容器的信息的时间。这接口通常用于类型转换。

这听起来像我需要使用,但我找不到任何例子。

我使用以下通用方法:

public T ParseValue<T>(string value)
{
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}

示例调用代码:

DateTime date = ParseValue<DateTime>("02062001");
decimal amount = ParseValue<decimal>("1.3423");

我希望能够解析某种通用格式信息到这个ParseValue()方法,可以由ConvertFromString()使用。

使用TypeConverter.ConvertFromString()解析自定义格式的字符串

您可以创建一个自定义的CultureInfo,保留您的格式。

另一个解决方案是将转换封装在使用DateTime的helper方法中。解析日期和TypeConverter的其他类型