protected Conversion(T Color1, U Color2) { this.Color1 = Color1; this.Color2 = Color2; var types = Assembly.GetAssembly(typeof(ConversionPath)).GetTypes(); var paths = (from t in types where t.IsSubclassOf(typeof(ConversionPath)) && !t.IsAbstract select t).ToArray(); int c = 0; for (int i = 0; i < paths.Length; i++) { var args = paths[i].BaseType.GetGenericArguments(); if (args.Length == 2) { if (args[0] == typeof(U) && args[1] == typeof(T)) { ConvToT = GetDelegate(paths[i]); if (ConvToT == null) { ConvToTEx = GetDelegateEx(paths[i]); IsConversionEx = true; } c++; } else if (args[0] == typeof(T) && args[1] == typeof(U)) { ConvToU = GetDelegate(paths[i]); if (ConvToU == null) { ConvToUEx = GetDelegateEx(paths[i]); IsConversionEx = true; } c++; } if (c == 2) { break; } } } if (IsConversionEx && (ConvToUEx == null || ConvToTEx == null)) { throw new MissingMethodException(); } else if (!IsConversionEx && (ConvToU == null || ConvToT == null)) { throw new MissingMethodException(); } }
/// <summary> /// Creates a new instance of the <see cref="CC_ExecuteMethod"/> class /// </summary> /// <param name="method">The method to execute</param> /// <param name="data">The data that is used for the method</param> public CC_ExecuteMethod(ConversionExDelegate method, double[][] data) { if (method == null) { throw new ArgumentNullException(nameof(method)); } if (data == null) { throw new ArgumentNullException(nameof(data)); } MethodCE = method; MethodCEData = data; }
public PathCheckData(Color inColor, Color outColor, ConversionExDelegate conversion, double[] inValues, double[] outValues, double[][] additionalData) : this(inColor, outColor, inValues, outValues) { if (conversion == null) { throw new ArgumentNullException(nameof(conversion)); } if (conversion == null) { throw new ArgumentNullException(nameof(additionalData)); } conversionEx = conversion; this.additionalData = additionalData; }