Sử dụng TypeConverter.ConvertFromString()
, tôi cần cung cấp định dạng tùy chỉnh khi phân tích dữ liệu từ chuỗi (ví dụ: DateTime
: "ddMMyyyy"
hoặc "MMMM dd, yyyy"
).Phân tích chuỗi trong các định dạng tùy chỉnh bằng cách sử dụng TypeConverter.ConvertFromString()
TypeConverter.ConvertFromString()
có tình trạng quá tải như sau:
public object ConvertFromString(ITypeDescriptorContext context,
CultureInfo culture,
string text);
tôi đã kiểm tra trên MSDN về ITypeDescriptorContext
.
Giao diện ITypeDescriptorContext cung cấp thông tin theo ngữ cảnh về thành phần. ITypeDescriptorContext thường được sử dụng tại thiết kế thời gian để cung cấp thông tin về vùng chứa thiết kế thời gian. Giao diện này thường được sử dụng trong chuyển đổi loại.
Điều này nghe giống như những gì tôi cần sử dụng nhưng tôi không thể tìm thấy bất kỳ ví dụ nào ở bất kỳ đâu.
Tôi đang sử dụng các phương pháp chung như sau:
public T ParseValue<T>(string value)
{
return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(value);
}
Ví dụ mã gọi:
DateTime date = ParseValue<DateTime>("02062001");
decimal amount = ParseValue<decimal>("1.3423");
Tôi muốn để có thể phân tích một số loại thông tin định dạng generic vào ParseValue()
phương pháp này có thể được được sử dụng bởi ConvertFromString()
.
@ Bob- Bởi vì đôi khi tôi sẽ phân tích cú pháp từ chuỗi thành các loại dữ liệu khác (không chỉ 'Ngày giờ '). Tôi cần sử dụng 'TypeDescriptor' để tôi có thể có được cơ chế phân tích thích hợp khi chạy. – davenewza
Tôi đang bối rối, bạn muốn chuyển đổi một DateTime, được biểu diễn như một chuỗi, với các kiểu dữ liệu khác? Vì vậy, thích một int? –
@ Bob- Tôi đã chỉnh sửa bài đăng của mình bằng nhiều ví dụ về mã hơn. Cảm ơn – davenewza