2013-04-24 29 views
6

使用TypeConverter.ConvertFromString(),我需要從字符串解析數據時提供自定義格式(例如,與DateTime"ddMMyyyy""MMMM dd, yyyy")。解析串

TypeConverter.ConvertFromString()具有以下過載:

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

我檢查上MSDNITypeDescriptorContext

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()

+0

@ Bob-因爲有時候我會將字符串解析爲其他數據類型(不僅僅是'DateTime')。我需要使用'TypeDescriptor',以便在運行時獲得適當的解析機制。 – davenewza 2013-04-24 13:51:55

+0

我很困惑,你想將一個DateTime轉換爲其他數據類型嗎?所以喜歡int? – 2013-04-24 13:56:02

+0

@ Bob-我用更多的代碼示例編輯了我的帖子。謝謝 – davenewza 2013-04-24 14:05:27

回答

2

您可以創建自定義CultureInfo,保存您的格式。

另一種解決方案是將換算換成一些輔助方法,這些方法會使用DateTime.Parse作爲日期,而TypeConverter用於其他類型。

+0

我曾考慮過(我還需要在分析小數,負數等時指定​​數字格式),但它似乎是一個矯枉過正的必須創建一個虛擬CultureInfo對象,只是覆蓋一些相關的屬性。那麼「ITypeDescriptorContext」實際上是什麼?謝謝回覆 :) – davenewza 2013-04-24 13:58:02