public static void PopulateUberStates() { uberStateLookup = new Dictionary <UberId, UberState>(); unsafe { var size = 0; var states = InterOp.get_uber_states(ref size); for (var i = 0; i < size; ++i) { var def = states[i]; var name = Marshal.PtrToStringAnsi(def.Name); var groupName = Marshal.PtrToStringAnsi(def.GroupName); uberStateLookup.Add(new UberId(def.GroupID, def.ID), new UberState() { ID = def.ID, GroupID = def.GroupID, Name = name, GroupName = groupName, Type = def.Type }); } } }