private static CoreArrayType GetCoreTypeOfType(Type type) { CoreArrayType coreArrayType = new Loader.CoreArrayType(); while (type.IsArray) { type = type.GetElementType(); coreArrayType.dimensionality++; } coreArrayType.coreType = type; return(coreArrayType); }
private static void CheckTypesEqual(Type parameterType, object argument) { if (parameterType == typeof(object)) { return; } if (argument == null) { if (parameterType == Type.GetType("System.Double") || parameterType == Type.GetType("System.Int32") || parameterType == Type.GetType("System.Boolean")) { throw new ArgumentException("Cannot pass a null argument to primitive type " + parameterType); } return; } else { Type type = argument.GetType(); Loader.CoreArrayType coreTypeOfType = Loader.GetCoreTypeOfType(parameterType); Loader.CoreArrayType coreTypeOfType2 = Loader.GetCoreTypeOfType(type); if (coreTypeOfType.dimensionality == coreTypeOfType2.dimensionality) { if (coreTypeOfType.dimensionality > 0) { return; } if (parameterType.IsAssignableFrom(type)) { return; } if (parameterType == typeof(double) && type == typeof(int)) { return; } if (Type.GetType("NXOpen.TaggedObject, NXOpen.Utilities").IsAssignableFrom(parameterType) && type == typeof(uint)) { return; } throw new ArgumentException(string.Concat(new object[] { "parameter type ", parameterType, " and supplied type ", type, " are not compatible" })); } else { if (coreTypeOfType.dimensionality == 0) { throw new ArgumentException(string.Concat(new object[] { "Cannot pass array argument ", argument, " to non-array parameter type ", parameterType })); } int num = coreTypeOfType2.dimensionality; if (num == 0) { num = (argument.GetType().IsArray ? 1 : 0); } if (num == 0) { throw new ArgumentException(string.Concat(new object[] { "Cannot pass non-array argument ", argument, " to array parameter type ", parameterType })); } return; } } }