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

Dav*_*New 7 .net c# datetime parsing type-conversion

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

TypeConverter.ConvertFromString() 有以下重载:

public object ConvertFromString(ITypeDescriptorContext context, 
                                CultureInfo culture, 
                                string text);
Run Code Online (Sandbox Code Playgroud)

我在MSDN上查了一下ITypeDescriptorContext.

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

这听起来像我需要使用但我在任何地方都找不到任何例子.

我使用以下通用方法:

public T ParseValue<T>(string value)
{
    return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}
Run Code Online (Sandbox Code Playgroud)

调用代码示例:

DateTime date = ParseValue<DateTime>("02062001");
decimal amount = ParseValue<decimal>("1.3423");
Run Code Online (Sandbox Code Playgroud)

我希望能够将某种通用格式信息解析为此ParseValue()方法,可以使用ConvertFromString().

ale*_*lex 4

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

另一个解决方案是在某些辅助方法中进行 Wrap 转换,该方法将使用 DateTime.Parse 来处理日期,使用 TypeConverter 来处理其他类型。