BTDB.FieldHandler.DefaultTypeConvertorGenerator.DefaultTypeConvertorGenerator C# (CSharp) Method

DefaultTypeConvertorGenerator() public method

public DefaultTypeConvertorGenerator ( ) : System
return System
        public DefaultTypeConvertorGenerator()
        {
            var convConvertibleTypes = new[]
                                           {
                                               typeof (byte), typeof (sbyte), typeof (ushort), typeof (short),
                                               typeof (uint), typeof (int), typeof (ulong), typeof (long),
                                               typeof (float), typeof (double)
                                           };
            AddConversions(convConvertibleTypes, typeof(long), ilg => ilg.ConvI8());
            AddConversions(convConvertibleTypes, typeof(ulong), ilg => ilg.ConvU8());
            AddConversions(convConvertibleTypes, typeof(int), ilg => ilg.ConvI4());
            AddConversions(convConvertibleTypes, typeof(uint), ilg => ilg.ConvU4());
            AddConversions(convConvertibleTypes, typeof(short), ilg => ilg.ConvI2());
            AddConversions(convConvertibleTypes, typeof(ushort), ilg => ilg.ConvU2());
            AddConversions(convConvertibleTypes, typeof(sbyte), ilg => ilg.ConvI1());
            AddConversions(convConvertibleTypes, typeof(byte), ilg => ilg.ConvU1());
            AddConversions(convConvertibleTypes, typeof(double), ilg => ilg.ConvR8());
            AddConversions(convConvertibleTypes, typeof(float), ilg => ilg.ConvR4());
            foreach (var m in GetType().GetMethods())
            {
                if (!m.IsStatic) continue;
                if (!m.IsPublic) continue;
                if (!m.Name.StartsWith("Convert", StringComparison.Ordinal)) continue;
                if (m.ContainsGenericParameters) continue;
                var parameterInfos = m.GetParameters();
                if (parameterInfos.Length != 1) continue;
                var fromType = parameterInfos[0].ParameterType;
                var closuredMethodInfo = m;
                _conversions[Tuple.Create(fromType, m.ReturnType)] = ilg => ilg.Call(closuredMethodInfo);
            }
        }