ich vermeiden würde Reflexion, wenn möglich verwenden. Ich würde nicht gerne auf Ihren Ansatz mit zukünftigen Versionen arbeiten :)
Fühlen Sie sich frei, eine Feature-Anfrage für diese Funktionalität für zukünftige Versionen, aber für den Moment würde ich bauen Sie Ihre Reverse-Wörterbuch in einem stabileren übrigens:
// Note: this version lets you work with any IDateTimeZoneSource, although as the only
// other built-in source is BclDateTimeZoneSource, that may be less useful :)
private static IDictionary<string, string> LoadTimeZoneMap(IDateTimeZoneSource source)
{
var nodaToWindowsMap = new Dictionary<string, string>();
foreach (var bclZone in TimeZoneInfo.GetSystemTimeZones())
{
var nodaId = source.MapTimeZoneId(bclZone);
if (nodaId != null)
{
nodaToWindowsMap[nodaId] = bclZone.Id;
}
}
return nodaToWindowsMap;
}
natürlich wird diese nicht alle Zeitzonen in TZDB decken. Tatsächlich gibt es nicht einmal alle Informationen, die wir könnten basierend auf den CLDR Informationen geben wir verwenden ... CLDR gibt mehrere Zuordnungen für jede Windows ID, und wir speichern nur die erste im Moment. Wir haben versucht, wie man trainiert mehr davon zu, aber noch nicht geschaffen. willkommen Gedanken über die Noda Zeit Mailingliste :)
Beachten Sie auch, dass, nur weil es eine Zuordnung zwischen den BCL und TZDB Zonen bedeutet nicht, sie werden tatsächlich die gleichen Ergebnisse für alles geben - es ist nur die nächste Zuordnung zur Verfügung.
Welche IANA Datei meinst du übrigens? Ich weiß, dass es eine CLDR gibt, aber wenn IANA dies in einem anderen Format bietet, wäre das interessant ... –