Esempio n. 1
0
 // Token: 0x06003525 RID: 13605 RVA: 0x000CE278 File Offset: 0x000CC478
 public InvokeTypeInfo(TypeAnalysis typeAnalysis) : base(typeAnalysis.name, typeAnalysis.level, typeAnalysis.opcode, typeAnalysis.keywords, typeAnalysis.tags)
 {
     if (typeAnalysis.properties.Length != 0)
     {
         this.properties = typeAnalysis.properties;
         this.accessors  = new PropertyAccessor <ContainerType> [this.properties.Length];
         for (int i = 0; i < this.accessors.Length; i++)
         {
             this.accessors[i] = PropertyAccessor <ContainerType> .Create(this.properties[i]);
         }
     }
 }
Esempio n. 2
0
 public InvokeTypeInfo(TypeAnalysis typeAnalysis)
     : base(typeAnalysis.name, typeAnalysis.level, typeAnalysis.opcode, typeAnalysis.keywords, typeAnalysis.tags)
 {
     if (typeAnalysis.properties.Length == 0)
     {
         return;
     }
     this.properties = typeAnalysis.properties;
     this.accessors  = new PropertyAccessor <ContainerType> [this.properties.Length];
     for (int index = 0; index < this.accessors.Length; ++index)
     {
         this.accessors[index] = PropertyAccessor <ContainerType> .Create(this.properties[index]);
     }
 }
Esempio n. 3
0
 public InvokeTypeInfo(
     Type type,
     TypeAnalysis typeAnalysis)
     : base(
         type,
         typeAnalysis.name !,
        // Token: 0x060035F1 RID: 13809 RVA: 0x000CF5C0 File Offset: 0x000CD7C0
        public static TraceLoggingTypeInfo <DataType> CreateDefaultTypeInfo <DataType>(List <Type> recursionCheck)
        {
            Type typeFromHandle = typeof(DataType);

            if (recursionCheck.Contains(typeFromHandle))
            {
                throw new NotSupportedException(Environment.GetResourceString("EventSource_RecursiveTypeDefinition"));
            }
            recursionCheck.Add(typeFromHandle);
            EventDataAttribute   customAttribute = Statics.GetCustomAttribute <EventDataAttribute>(typeFromHandle);
            TraceLoggingTypeInfo traceLoggingTypeInfo;

            if (customAttribute != null || Statics.GetCustomAttribute <CompilerGeneratedAttribute>(typeFromHandle) != null)
            {
                TypeAnalysis typeAnalysis = new TypeAnalysis(typeFromHandle, customAttribute, recursionCheck);
                traceLoggingTypeInfo = new InvokeTypeInfo <DataType>(typeAnalysis);
            }
            else if (typeFromHandle.IsArray)
            {
                Type elementType = typeFromHandle.GetElementType();
                if (elementType == typeof(bool))
                {
                    traceLoggingTypeInfo = new BooleanArrayTypeInfo();
                }
                else if (elementType == typeof(byte))
                {
                    traceLoggingTypeInfo = new ByteArrayTypeInfo();
                }
                else if (elementType == typeof(sbyte))
                {
                    traceLoggingTypeInfo = new SByteArrayTypeInfo();
                }
                else if (elementType == typeof(short))
                {
                    traceLoggingTypeInfo = new Int16ArrayTypeInfo();
                }
                else if (elementType == typeof(ushort))
                {
                    traceLoggingTypeInfo = new UInt16ArrayTypeInfo();
                }
                else if (elementType == typeof(int))
                {
                    traceLoggingTypeInfo = new Int32ArrayTypeInfo();
                }
                else if (elementType == typeof(uint))
                {
                    traceLoggingTypeInfo = new UInt32ArrayTypeInfo();
                }
                else if (elementType == typeof(long))
                {
                    traceLoggingTypeInfo = new Int64ArrayTypeInfo();
                }
                else if (elementType == typeof(ulong))
                {
                    traceLoggingTypeInfo = new UInt64ArrayTypeInfo();
                }
                else if (elementType == typeof(char))
                {
                    traceLoggingTypeInfo = new CharArrayTypeInfo();
                }
                else if (elementType == typeof(double))
                {
                    traceLoggingTypeInfo = new DoubleArrayTypeInfo();
                }
                else if (elementType == typeof(float))
                {
                    traceLoggingTypeInfo = new SingleArrayTypeInfo();
                }
                else if (elementType == typeof(IntPtr))
                {
                    traceLoggingTypeInfo = new IntPtrArrayTypeInfo();
                }
                else if (elementType == typeof(UIntPtr))
                {
                    traceLoggingTypeInfo = new UIntPtrArrayTypeInfo();
                }
                else if (elementType == typeof(Guid))
                {
                    traceLoggingTypeInfo = new GuidArrayTypeInfo();
                }
                else
                {
                    traceLoggingTypeInfo = (TraceLoggingTypeInfo <DataType>)Statics.CreateInstance(typeof(ArrayTypeInfo <>).MakeGenericType(new Type[]
                    {
                        elementType
                    }), new object[]
                    {
                        Statics.GetTypeInfoInstance(elementType, recursionCheck)
                    });
                }
            }
            else if (Statics.IsEnum(typeFromHandle))
            {
                Type underlyingType = Enum.GetUnderlyingType(typeFromHandle);
                if (underlyingType == typeof(int))
                {
                    traceLoggingTypeInfo = new EnumInt32TypeInfo <DataType>();
                }
                else if (underlyingType == typeof(uint))
                {
                    traceLoggingTypeInfo = new EnumUInt32TypeInfo <DataType>();
                }
                else if (underlyingType == typeof(byte))
                {
                    traceLoggingTypeInfo = new EnumByteTypeInfo <DataType>();
                }
                else if (underlyingType == typeof(sbyte))
                {
                    traceLoggingTypeInfo = new EnumSByteTypeInfo <DataType>();
                }
                else if (underlyingType == typeof(short))
                {
                    traceLoggingTypeInfo = new EnumInt16TypeInfo <DataType>();
                }
                else if (underlyingType == typeof(ushort))
                {
                    traceLoggingTypeInfo = new EnumUInt16TypeInfo <DataType>();
                }
                else if (underlyingType == typeof(long))
                {
                    traceLoggingTypeInfo = new EnumInt64TypeInfo <DataType>();
                }
                else
                {
                    if (!(underlyingType == typeof(ulong)))
                    {
                        throw new NotSupportedException(Environment.GetResourceString("EventSource_NotSupportedEnumType", new object[]
                        {
                            typeFromHandle.Name,
                            underlyingType.Name
                        }));
                    }
                    traceLoggingTypeInfo = new EnumUInt64TypeInfo <DataType>();
                }
            }
            else if (typeFromHandle == typeof(string))
            {
                traceLoggingTypeInfo = new StringTypeInfo();
            }
            else if (typeFromHandle == typeof(bool))
            {
                traceLoggingTypeInfo = new BooleanTypeInfo();
            }
            else if (typeFromHandle == typeof(byte))
            {
                traceLoggingTypeInfo = new ByteTypeInfo();
            }
            else if (typeFromHandle == typeof(sbyte))
            {
                traceLoggingTypeInfo = new SByteTypeInfo();
            }
            else if (typeFromHandle == typeof(short))
            {
                traceLoggingTypeInfo = new Int16TypeInfo();
            }
            else if (typeFromHandle == typeof(ushort))
            {
                traceLoggingTypeInfo = new UInt16TypeInfo();
            }
            else if (typeFromHandle == typeof(int))
            {
                traceLoggingTypeInfo = new Int32TypeInfo();
            }
            else if (typeFromHandle == typeof(uint))
            {
                traceLoggingTypeInfo = new UInt32TypeInfo();
            }
            else if (typeFromHandle == typeof(long))
            {
                traceLoggingTypeInfo = new Int64TypeInfo();
            }
            else if (typeFromHandle == typeof(ulong))
            {
                traceLoggingTypeInfo = new UInt64TypeInfo();
            }
            else if (typeFromHandle == typeof(char))
            {
                traceLoggingTypeInfo = new CharTypeInfo();
            }
            else if (typeFromHandle == typeof(double))
            {
                traceLoggingTypeInfo = new DoubleTypeInfo();
            }
            else if (typeFromHandle == typeof(float))
            {
                traceLoggingTypeInfo = new SingleTypeInfo();
            }
            else if (typeFromHandle == typeof(DateTime))
            {
                traceLoggingTypeInfo = new DateTimeTypeInfo();
            }
            else if (typeFromHandle == typeof(decimal))
            {
                traceLoggingTypeInfo = new DecimalTypeInfo();
            }
            else if (typeFromHandle == typeof(IntPtr))
            {
                traceLoggingTypeInfo = new IntPtrTypeInfo();
            }
            else if (typeFromHandle == typeof(UIntPtr))
            {
                traceLoggingTypeInfo = new UIntPtrTypeInfo();
            }
            else if (typeFromHandle == typeof(Guid))
            {
                traceLoggingTypeInfo = new GuidTypeInfo();
            }
            else if (typeFromHandle == typeof(TimeSpan))
            {
                traceLoggingTypeInfo = new TimeSpanTypeInfo();
            }
            else if (typeFromHandle == typeof(DateTimeOffset))
            {
                traceLoggingTypeInfo = new DateTimeOffsetTypeInfo();
            }
            else if (typeFromHandle == typeof(EmptyStruct))
            {
                traceLoggingTypeInfo = new NullTypeInfo <EmptyStruct>();
            }
            else if (Statics.IsGenericMatch(typeFromHandle, typeof(KeyValuePair <, >)))
            {
                Type[] genericArguments = Statics.GetGenericArguments(typeFromHandle);
                traceLoggingTypeInfo = (TraceLoggingTypeInfo <DataType>)Statics.CreateInstance(typeof(KeyValuePairTypeInfo <, >).MakeGenericType(new Type[]
                {
                    genericArguments[0],
                    genericArguments[1]
                }), new object[]
                {
                    recursionCheck
                });
            }
            else if (Statics.IsGenericMatch(typeFromHandle, typeof(Nullable <>)))
            {
                Type[] genericArguments2 = Statics.GetGenericArguments(typeFromHandle);
                traceLoggingTypeInfo = (TraceLoggingTypeInfo <DataType>)Statics.CreateInstance(typeof(NullableTypeInfo <>).MakeGenericType(new Type[]
                {
                    genericArguments2[0]
                }), new object[]
                {
                    recursionCheck
                });
            }
            else
            {
                Type type = Statics.FindEnumerableElementType(typeFromHandle);
                if (!(type != null))
                {
                    throw new ArgumentException(Environment.GetResourceString("EventSource_NonCompliantTypeError", new object[]
                    {
                        typeFromHandle.Name
                    }));
                }
                traceLoggingTypeInfo = (TraceLoggingTypeInfo <DataType>)Statics.CreateInstance(typeof(EnumerableTypeInfo <, >).MakeGenericType(new Type[]
                {
                    typeFromHandle,
                    type
                }), new object[]
                {
                    Statics.GetTypeInfoInstance(type, recursionCheck)
                });
            }
            return((TraceLoggingTypeInfo <DataType>)traceLoggingTypeInfo);
        }