Mam następujący kod:Generic funkcja konwersji nie wydają się działać z GUID
public static T ParameterFetchValue<T>(string parameterKey)
{
Parameter result = null;
result = ParameterRepository.FetchParameter(parameterKey);
return (T)Convert.ChangeType(result.CurrentValue, typeof(T), CultureInfo.InvariantCulture);
}
Rodzaj result.CurrentValue
jest ciąg. Chciałbym móc przekonwertować go na Guid, ale nadal otrzymuję błąd:
Invalid cast from System.String to System.Guid
Działa to doskonale z pierwotnymi typami danych.
Czy jest jakiś sposób, aby uzyskać dla niepoptymalnych typów danych?
Bądź ostrożny z używaniem ConvertFromInvariantString. Jeśli Twój typ to DateTime i masz międzynarodowe formaty daty, to się wysadzi. Właśnie znalazłem naprawdę trudny do znalezienia błąd oparty na tej odpowiedzi. –
@DPeden rzeczywiście, muszą się zgadzać - moje użycie tutaj było używane niezmiennie przy założeniu, że zserializowane dane powinny być zwykle w niezmiennym formacie –
Tak, zgodzili się. Nadal przegłosowałem twoją odpowiedź, ponieważ jest ona bardzo przydatna. Po prostu wskazuję na to potencjalne zagrożenie dla innych, ponieważ mnie spalił. –