Пример #1
0
 private void BuildParameterAccessors <TProperty>(string paramName, MethodInfo getter)
 {
     MeasurementEventMetadata <TEvent> .PropertyAccessor <TProperty> propertyAccessor = (MeasurementEventMetadata <TEvent> .PropertyAccessor <TProperty>)Delegate.CreateDelegate(typeof(MeasurementEventMetadata <> .PropertyAccessor <TEvent, TProperty>), getter);
     MeasurementEvent <TEvent> .StringParameterAccessor stringParameterAccessor       = (TEvent ev) => {
         string str;
         try
         {
             TProperty tProperty = propertyAccessor(ev);
             str = (tProperty == null ? "" : tProperty.ToString());
         }
         catch (Exception exception1)
         {
             Exception exception = exception1;
             throw new MeasurementEventException(string.Concat(new string[] { "Exception getting property ", propertyAccessor.Method.Name, " of measurement event class ", typeof(TEvent).FullName, " as a string: ", exception.Message }), exception);
         }
         return(str);
     };
     DoubleConverter.Conversion <TProperty> conversion = DoubleConverter.GetConversion <TProperty>();
     MeasurementEvent <TEvent> .NumericParameterAccessor numericParameterAccessor = (TEvent ev) => {
         double num;
         try
         {
             num = conversion(propertyAccessor(ev));
         }
         catch (Exception exception1)
         {
             Exception exception = exception1;
             throw new MeasurementEventException(string.Concat(new string[] { "Exception getting property ", propertyAccessor.Method.Name, " of measurement event class ", typeof(TEvent).FullName, " as a double: ", exception.Message }), exception);
         }
         return(num);
     };
     try
     {
         this.stringParams.Add(paramName, stringParameterAccessor);
         this.numericParams.Add(paramName, numericParameterAccessor);
     }
     catch (ArgumentException argumentException1)
     {
         ArgumentException argumentException = argumentException1;
         throw new MeasurementEventException(string.Concat("Measurement event class ", getter.DeclaringType.FullName, " declares more than one parameter named ", paramName), argumentException);
     }
 }
Пример #2
0
        public static DoubleConverter.Conversion <TInput> GetConversion <TInput>()
        {
            Delegate fromBoolean;
            Type     type = typeof(TInput);

            if (type.IsEnum)
            {
                return(DoubleConverter.GetEnumConversion <TInput>());
            }
            switch (Type.GetTypeCode(type))
            {
            case TypeCode.Boolean:
            {
                fromBoolean = DoubleConverter.FromBoolean;
                break;
            }

            case TypeCode.Char:
            {
                fromBoolean = DoubleConverter.FromChar;
                break;
            }

            case TypeCode.SByte:
            {
                fromBoolean = DoubleConverter.FromSByte;
                break;
            }

            case TypeCode.Byte:
            {
                fromBoolean = DoubleConverter.FromByte;
                break;
            }

            case TypeCode.Int16:
            {
                fromBoolean = DoubleConverter.FromInt16;
                break;
            }

            case TypeCode.UInt16:
            {
                fromBoolean = DoubleConverter.FromUInt16;
                break;
            }

            case TypeCode.Int32:
            {
                fromBoolean = DoubleConverter.FromInt32;
                break;
            }

            case TypeCode.UInt32:
            {
                fromBoolean = DoubleConverter.FromUInt32;
                break;
            }

            case TypeCode.Int64:
            {
                fromBoolean = DoubleConverter.FromInt64;
                break;
            }

            case TypeCode.UInt64:
            {
                fromBoolean = DoubleConverter.FromUInt64;
                break;
            }

            case TypeCode.Single:
            {
                fromBoolean = DoubleConverter.FromSingle;
                break;
            }

            case TypeCode.Double:
            {
                fromBoolean = DoubleConverter.FromDouble;
                break;
            }

            case TypeCode.Decimal:
            {
                fromBoolean = DoubleConverter.FromDecimal;
                break;
            }

            case TypeCode.DateTime:
            {
                fromBoolean = DoubleConverter.FromDateTime;
                break;
            }

            default:
            {
                if (typeof(TimeSpan) != type)
                {
                    fromBoolean = new DoubleConverter.Conversion <TInput>((TInput val) => DoubleConverter.FromObject(val));
                    break;
                }
                else
                {
                    fromBoolean = DoubleConverter.FromTimeSpan;
                    break;
                }
            }
            }
            return(fromBoolean as DoubleConverter.Conversion <TInput>);
        }
Пример #3
0
        public static DoubleConverter.Conversion <TInput> GetEnumConversion <TInput>()
        {
            DoubleConverter.Conversion <TInput> fromSByte;
            switch (Type.GetTypeCode(typeof(TInput)))
            {
            case TypeCode.SByte:
            {
                fromSByte = (TInput val) => DoubleConverter.FromSByte(Convert.ToSByte(val));
                break;
            }

            case TypeCode.Byte:
            {
                fromSByte = (TInput val) => DoubleConverter.FromByte(Convert.ToByte(val));
                break;
            }

            case TypeCode.Int16:
            {
                fromSByte = (TInput val) => DoubleConverter.FromInt16(Convert.ToInt16(val));
                break;
            }

            case TypeCode.UInt16:
            {
                fromSByte = (TInput val) => DoubleConverter.FromUInt16(Convert.ToUInt16(val));
                break;
            }

            case TypeCode.Int32:
            {
                fromSByte = (TInput val) => DoubleConverter.FromInt32(Convert.ToInt32(val));
                break;
            }

            case TypeCode.UInt32:
            {
                fromSByte = (TInput val) => DoubleConverter.FromUInt32(Convert.ToUInt32(val));
                break;
            }

            case TypeCode.Int64:
            {
                fromSByte = (TInput val) => DoubleConverter.FromInt64(Convert.ToInt64(val));
                break;
            }

            case TypeCode.UInt64:
            {
                fromSByte = (TInput val) => DoubleConverter.FromUInt64(Convert.ToUInt64(val));
                break;
            }

            default:
            {
                fromSByte = null;
                break;
            }
            }
            return(fromSByte);
        }