Exemplo n.º 1
0
 static DoubleConverter()
 {
     DoubleConverter.FromBoolean = (bool val) => {
         if (!val)
         {
             return(0);
         }
         return(1);
     };
     DoubleConverter.FromByte     = (byte val) => (double)val;
     DoubleConverter.FromChar     = (char val) => (double)val;
     DoubleConverter.FromDateTime = (DateTime val) => (double)val.ToFileTimeUtc();
     DoubleConverter.FromDecimal  = (decimal val) => (double)((double)val);
     DoubleConverter.FromDouble   = (double val) => val;
     DoubleConverter.FromInt16    = (short val) => (double)val;
     DoubleConverter.FromInt32    = (int val) => (double)val;
     DoubleConverter.FromInt64    = (long val) => (double)val;
     DoubleConverter.FromSByte    = (sbyte val) => (double)val;
     DoubleConverter.FromSingle   = (float val) => (double)val;
     DoubleConverter.FromUInt16   = (ushort val) => (double)val;
     DoubleConverter.FromUInt32   = (uint val) => (double)((float)val);
     DoubleConverter.FromUInt64   = (ulong val) => (double)((float)val);
     DoubleConverter.FromObject   = (object val) => Convert.ToDouble(val, CultureInfo.InvariantCulture);
     DoubleConverter.FromTimeSpan = (TimeSpan val) => val.TotalSeconds;
 }
Exemplo n.º 2
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);
     }
 }
Exemplo n.º 3
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>);
        }