public static String[] GetValueAsStringArray(this PropertyData p, PropertyDataValueMap valueMap) { // Format value as string if (p.Value == null) { return new String[] { String.Empty }; } else { // Is the value an array? if (p.Value.GetType().IsArray) { var objects = (IEnumerable)p.Value; var values = new List<String>(); foreach (var obj in objects) { values.Add(GetObjectAsString(obj, p, valueMap)); } return values.ToArray(); } else { return new String[] { GetObjectAsString(p.Value, p, valueMap) }; } } }
public static String GetValueAsString(this PropertyData p, PropertyDataValueMap valueMap) { return String.Join(", ", GetValueAsStringArray(p, valueMap)); }
private static String GetObjectAsString(Object obj, PropertyData p, PropertyDataValueMap map) { if (obj == null) { return String.Empty; } // Is a reference to another management class? else if (obj.GetType().IsAssignableFrom(typeof(ManagementBaseObject))) { // Expand object return ((ManagementBaseObject)obj).GetRelativePath(); } else if (p.Type == CimType.DateTime) { DateTime datetime = ManagementDateTimeConverter.ToDateTime(p.Value.ToString()); return datetime.ToString(); } else if (p.Type == CimType.UInt64 && p.Name == "TIME_CREATED") { Double ms = ((UInt64)obj) / 10000; var datetime = epoch.AddMilliseconds(ms); return datetime.ToLocalTime().ToString(); } else if (map != null && obj != null && map.ContainsKey(obj.ToString())) { return String.Format("{0} ({1})", map[obj.ToString()], obj.ToString()); } else { // Plain old string! return obj.ToString(); } }