static BinaryCommon()
{
_typeCodesToType = new Type [19];
_typeCodesToType[(int)BinaryTypeCode.Boolean] = typeof (Boolean);
_typeCodesToType[(int)BinaryTypeCode.Byte] = typeof (Byte);
_typeCodesToType[(int)BinaryTypeCode.Char] = typeof (Char);
_typeCodesToType[(int)BinaryTypeCode.TimeSpan] = typeof (TimeSpan);
_typeCodesToType[(int)BinaryTypeCode.DateTime] = typeof (DateTime);
_typeCodesToType[(int)BinaryTypeCode.Decimal] = typeof (Decimal);
_typeCodesToType[(int)BinaryTypeCode.Double] = typeof (Double);
_typeCodesToType[(int)BinaryTypeCode.Int16] = typeof (Int16);
_typeCodesToType[(int)BinaryTypeCode.Int32] = typeof (Int32);
_typeCodesToType[(int)BinaryTypeCode.Int64] = typeof (Int64);
_typeCodesToType[(int)BinaryTypeCode.SByte] = typeof (SByte);
_typeCodesToType[(int)BinaryTypeCode.Single] = typeof (Single);
_typeCodesToType[(int)BinaryTypeCode.UInt16] = typeof (UInt16);
_typeCodesToType[(int)BinaryTypeCode.UInt32] = typeof (UInt32);
_typeCodesToType[(int)BinaryTypeCode.UInt64] = typeof (UInt64);
_typeCodesToType[(int)BinaryTypeCode.Null] = null;
_typeCodesToType[(int)BinaryTypeCode.String] = typeof (string);
_typeCodeMap = new byte[30];
_typeCodeMap[(int)TypeCode.Boolean] = (byte) BinaryTypeCode.Boolean;
_typeCodeMap[(int)TypeCode.Byte] = (byte) BinaryTypeCode.Byte;
_typeCodeMap[(int)TypeCode.Char] = (byte) BinaryTypeCode.Char;
_typeCodeMap[(int)TypeCode.DateTime] = (byte) BinaryTypeCode.DateTime;
_typeCodeMap[(int)TypeCode.Decimal] = (byte) BinaryTypeCode.Decimal;
_typeCodeMap[(int)TypeCode.Double] = (byte) BinaryTypeCode.Double;
_typeCodeMap[(int)TypeCode.Int16] = (byte) BinaryTypeCode.Int16;
_typeCodeMap[(int)TypeCode.Int32] = (byte) BinaryTypeCode.Int32;
_typeCodeMap[(int)TypeCode.Int64] = (byte) BinaryTypeCode.Int64;
_typeCodeMap[(int)TypeCode.SByte] = (byte) BinaryTypeCode.SByte;
_typeCodeMap[(int)TypeCode.Single] = (byte) BinaryTypeCode.Single;
_typeCodeMap[(int)TypeCode.UInt16] = (byte) BinaryTypeCode.UInt16;
_typeCodeMap[(int)TypeCode.UInt32] = (byte) BinaryTypeCode.UInt32;
_typeCodeMap[(int)TypeCode.UInt64] = (byte) BinaryTypeCode.UInt64;
_typeCodeMap[(int)TypeCode.String] = (byte) BinaryTypeCode.String;
// TimeStamp does not have a TypeCode, so it is managed as a special
// case in GetTypeCode()
#if !NET_2_1 || MONOTOUCH
// This environment variable is only for test and benchmarking purposes.
// By default, mono will always use IL generated class serializers.
string s = Environment.GetEnvironmentVariable("MONO_REFLECTION_SERIALIZER");
if (s == null) s = "no";
UseReflectionSerialization = (s != "no");
#endif
}