private static object op_BitwiseOr(object lhs, TypeCode lhsTypeCode,
object rhs, TypeCode rhsTypeCode)
{
IConvertible lhsConvertible = (IConvertible)lhs;
IConvertible rhsConvertible = (IConvertible)rhs;
switch (GetConvertTypeCode(lhsTypeCode, rhsTypeCode))
{
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
throw new ArgumentException(lhsTypeCode + " | " + rhsTypeCode);
case TypeCode.UInt64:
return lhsConvertible.ToUInt64(null) | rhsConvertible.ToUInt64(null);
case TypeCode.Int64:
return lhsConvertible.ToInt64(null) | rhsConvertible.ToInt64(null);
case TypeCode.UInt32:
return lhsConvertible.ToUInt32(null) | rhsConvertible.ToUInt32(null);
default:
return lhsConvertible.ToInt32(null) | rhsConvertible.ToInt32(null);
}
}