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

时间:2013-04-24 13:31:12

标签: c# .net parsing datetime type-conversion

使用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()可以使用该方法。

1 个答案:

答案 0 :(得分:2)

您可以创建自定义CultureInfo,保存您的格式。

另一个解决方案是在一些帮助方法中换行转换,该方法将DateTime.Parse用于日期,将TypeConverter用于其他类型。