public static Type ToType(CIMType cimtype, bool bIsArray, Property prop) { Type t = null; switch (cimtype) { case (CIMType.Boolean): { if (bIsArray) { Boolean[] ar = new Boolean[0]; t = ar.GetType(); } else { t = typeof(Boolean); } } break; case (CIMType.Char16): { if (bIsArray) { Char[] ar = new Char[0]; t = ar.GetType(); } else { t = typeof(Char); } } break; case (CIMType.DateTime): { if (WmiHelper.IsInterval(prop)) { if (bIsArray) { TimeSpan[] ar = new TimeSpan[0]; t = ar.GetType(); } else { t = typeof(TimeSpan); } } else { if (bIsArray) { DateTime[] ar = new DateTime[0]; t = ar.GetType(); } else { t = typeof(DateTime); } } } break; case (CIMType.Object): { if (bIsArray) { WMIObjectComponent[] ar = new WMIObjectComponent[0]; t = ar.GetType(); } else { t = typeof(WMIObjectComponent); } } break; case (CIMType.Real32): { if (bIsArray) { Single[] ar = new Single[0]; t = ar.GetType(); } else { t = typeof(Single); } } break; case (CIMType.Real64): { if (bIsArray) { Double[] ar = new Double[0]; t = ar.GetType(); } else { t = typeof(Double); } } break; case (CIMType.Reference): { if (bIsArray) { String[] ar = new String[0]; t = ar.GetType(); } else { t = typeof(String); } } break; case (CIMType.Sint16): { if (bIsArray) { Int16[] ar = new Int16[0]; t = ar.GetType(); } else { t = typeof(Int16); } } break; case (CIMType.Sint32): { if (bIsArray) { Int32[] ar = new Int32[0]; t = ar.GetType(); } else { t = typeof(Int32); } } break; case (CIMType.Sint64): { if (bIsArray) { Int64[] ar = new Int64[0]; t = ar.GetType(); } else { t = typeof(Int64); } } break; case (CIMType.Sint8): { if (bIsArray) { SByte[] ar = new SByte[0]; t = ar.GetType(); } else { t = typeof(SByte); } } break; case (CIMType.String): { if (bIsArray) { String[] ar = new String[0]; t = ar.GetType(); //return typeof(System.Collections.ArrayList); } else { t = typeof(String); } } break; case (CIMType.Uint16): { if (bIsArray) { UInt16[] ar = new UInt16[0]; t = ar.GetType(); } else { t = typeof(UInt16); } } break; case (CIMType.Uint32): { if (bIsArray) { UInt32[] ar = new UInt32[0]; t = ar.GetType(); } else { t = typeof(UInt32); } } break; case (CIMType.Uint64): { if (bIsArray) { UInt64[] ar = new UInt64[0]; t = ar.GetType(); } else { t = typeof(UInt64); } } break; case (CIMType.Uint8): { if (bIsArray) { Byte[] ar = new Byte[0]; t = ar.GetType(); } else { t = typeof(Byte); } } break; default: { if (bIsArray) { Object[] ar = new Object[0]; t = ar.GetType(); } else { t = typeof(Object); } } } return(t); }
public override Object GetValue(Object component) { CimType CimType = prop.Type; if (prop == null) { return(null); } //handle embedded objects and array of embedded objects if (CimType == CimType.Object) { return(null); //disabled for Beta1: too many problems //throw new Exception("Displaying embedded objects is not supported in Beta1"); } if (prop.Value == null) { if (prop.IsArray) { return(Array.CreateInstance(CimTypeMapper.ToType(CimType, false, prop), 0)); } return(null); } //handle datetimes, intervals and arrays of datetimes and intervals if (CimType == CimType.DateTime) { if (WmiHelper.IsInterval(prop)) { if (prop.IsArray) { string[] strAr = (string[])prop.Value; TimeSpan[] retAr = new TimeSpan[strAr.Length]; for (int i = 0; i < strAr.Length; i++) { retAr[i] = WmiHelper.ToTimeSpan(strAr[i]); } return(retAr); } else { return(WmiHelper.ToTimeSpan(prop.Value.ToString())); } } else { if (prop.IsArray) { string[] strAr = (string[])prop.Value; DateTime[] retAr = new DateTime[strAr.Length]; for (int i = 0; i < strAr.Length; i++) { retAr[i] = WmiHelper.ToDateTime(strAr[i]); } return(retAr); } else { return(WmiHelper.ToDateTime(prop.Value.ToString())); } } } return(prop.Value); }