2009-07-23 6 views
3

文字列をT型に変換するコードを以下に示します。他のすべての型は正常に動作しますが、TがDateTime型の場合はエラーが発生します。DateTime TypeConverter

TypeConverter c = TypeDescriptor.GetConverter(typeof (T)); 
return (T) c.ConvertTo(obj, typeof (T)) 

私はそれがエラーをスロー

obj = "09/09/2009" 

ような文字列を渡す{ "'DateTimeConverterは 'のSystem.DateTime' 'の可能System.String' を変換することができない。"}

答えて

7

文字列を取得している場合は、代わりにTypeConverter.ConvertFromStringを使用できます。それはで動作しますが、理由はわかりませんが、ConvertToはありません。

例えば、これは動作します:

TypeConverter c = TypeDescriptor.GetConverter(typeof (DateTime)); 
Console.WriteLine((DateTime) c.ConvertFromString("09/09/2009")); 

はまた、ちょうどConvertFromも同様に動作します

TypeConverter c = TypeDescriptor.GetConverter(typeof (DateTime)); 
Console.WriteLine((DateTime) c.ConvertFrom("09/09/2009")); 

それはそれは、コンバータのようなものだからDateTimeを変換するために起こっています。

しかし、文化的な問題に注意する必要があります。