namespace RobotApp.VDA5050; public enum VDA5050Topic { CONNECTION, ORDER, INSTANTACTIONS, STATE, VISUALIZATION, FACTSHEET } public static class EnumExtensions { private static readonly Dictionary TopicToStringMap = new() { { VDA5050Topic.CONNECTION, "connection" }, { VDA5050Topic.ORDER, "order" }, { VDA5050Topic.INSTANTACTIONS, "instantActions" }, { VDA5050Topic.STATE, "state" }, { VDA5050Topic.VISUALIZATION, "visualization" }, { VDA5050Topic.FACTSHEET, "factsheet" } }; private static readonly Dictionary StringToTopicMap = new(StringComparer.OrdinalIgnoreCase) { { "connection", VDA5050Topic.CONNECTION }, { "order", VDA5050Topic.ORDER }, { "instantActions", VDA5050Topic.INSTANTACTIONS }, { "state", VDA5050Topic.STATE }, { "visualization", VDA5050Topic.VISUALIZATION }, { "factsheet", VDA5050Topic.FACTSHEET } }; public static string ToTopicString(this VDA5050Topic type) { if (TopicToStringMap.TryGetValue(type, out var value)) return value; throw new ArgumentException($"Invalid VDA5050Topic: {type}"); } public static VDA5050Topic ToTopic(string value) { if (StringToTopicMap.TryGetValue(value, out var result)) return result; throw new ArgumentException($"No VDA5050Topic with string value '{value}' found."); } }