Tôi có đoạn mã sau:chức năng chuyển đổi Generic dường như không làm việc với Guids
public static T ParameterFetchValue<T>(string parameterKey)
{
Parameter result = null;
result = ParameterRepository.FetchParameter(parameterKey);
return (T)Convert.ChangeType(result.CurrentValue, typeof(T), CultureInfo.InvariantCulture);
}
Loại result.CurrentValue
là chuỗi. Tôi muốn có thể chuyển đổi nó thành Guid nhưng tôi vẫn gặp lỗi:
Invalid cast from System.String to System.Guid
Điều này hoạt động hoàn hảo với các kiểu dữ liệu nguyên thủy.
Có cách nào để thực hiện công việc này cho các loại dữ liệu không nguyên thủy không?
Hãy cẩn thận với việc sử dụng ConvertFromInvariantString. Nếu loại của bạn là một DateTime và bạn có định dạng ngày quốc tế, điều này sẽ thổi lên. Tôi chỉ theo dõi một lỗi thực sự khó tìm thấy dựa trên câu trả lời này. –
@ DPeden thực sự, họ phải phù hợp - sử dụng của tôi ở đây đã sử dụng bất biến trên giả định rằng dữ liệu tuần tự thường phải ở định dạng bất biến –
Yep, đồng ý. Tôi vẫn upvoted câu trả lời của bạn vì nó là rất hữu ích. Chỉ cần chỉ ra này gotcha tiềm năng cho những người khác vì nó đốt cháy tôi. –