예제 #1
0
        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);
        }
예제 #2
0
        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);
        }