private static CoreLogic.Classes.Class ConvertModelToClass(Models.Class classModel) { if (classModel.type == MF_TRIANGULAR) { return new CoreLogic.Classes.ClassWithTriangularMF( classModel.name, classModel.@params[MF_TRIANGULAR_A], classModel.@params[MF_TRIANGULAR_B], classModel.@params[MF_TRIANGULAR_C] ); } else if (classModel.type == MF_TRAPEZOIDAL) { return new CoreLogic.Classes.ClassWithTrapezoidalMF( classModel.name, classModel.@params[MF_TRAPEZOIDAL_A], classModel.@params[MF_TRAPEZOIDAL_B], classModel.@params[MF_TRAPEZOIDAL_C], classModel.@params[MF_TRAPEZOIDAL_D] ); } else if (classModel.type == MF_GAUSSIAN) { return new CoreLogic.Classes.ClassWithGaussianMF( classModel.name, classModel.@params[MF_GAUSSIAN_C], classModel.@params[MF_GAUSSIAN_SIGMA] ); } else if (classModel.type == MF_GENERALISED_BELL) { return new CoreLogic.Classes.ClassWithGeneralisedBellMF( classModel.name, classModel.@params[MF_GENERALISED_BELL_A], classModel.@params[MF_GENERALISED_BELL_B], classModel.@params[MF_GENERALISED_BELL_C] ); } else if (classModel.type == MF_SIGMOID_DIFF) { return new CoreLogic.Classes.ClassWithSigmoidDifferenceMF( classModel.name, classModel.@params[MF_SIGMOID_DIFF_A1], classModel.@params[MF_SIGMOID_DIFF_A2], classModel.@params[MF_SIGMOID_DIFF_C1], classModel.@params[MF_SIGMOID_DIFF_C2] ); } else { throw new ArgumentException($"Attemt to parse an unknown type of classes: {classModel.type}"); } }
private static Models.Class ConvertClassToModel(CoreLogic.Classes.Class clazz) { var classModel = new Models.Class { name = clazz.Name, @params = new Dictionary<string, double>() }; if (clazz is CoreLogic.Classes.ClassWithTriangularMF) { classModel.type = MF_TRIANGULAR; var classWithTriangularMF = clazz as CoreLogic.Classes.ClassWithTriangularMF; classModel.@params[MF_TRIANGULAR_A] = classWithTriangularMF.A; classModel.@params[MF_TRIANGULAR_B] = classWithTriangularMF.B; classModel.@params[MF_TRIANGULAR_C] = classWithTriangularMF.C; } else if (clazz is CoreLogic.Classes.ClassWithTrapezoidalMF) { classModel.type = MF_TRAPEZOIDAL; var classWithTrapezoidalMF = clazz as CoreLogic.Classes.ClassWithTrapezoidalMF; classModel.@params[MF_TRAPEZOIDAL_A] = classWithTrapezoidalMF.A; classModel.@params[MF_TRAPEZOIDAL_B] = classWithTrapezoidalMF.B; classModel.@params[MF_TRAPEZOIDAL_C] = classWithTrapezoidalMF.C; classModel.@params[MF_TRAPEZOIDAL_D] = classWithTrapezoidalMF.D; } else if (clazz is CoreLogic.Classes.ClassWithGaussianMF) { classModel.type = MF_GAUSSIAN; var classWithGaussianMF = clazz as CoreLogic.Classes.ClassWithGaussianMF; classModel.@params[MF_GAUSSIAN_C] = classWithGaussianMF.C; classModel.@params[MF_GAUSSIAN_SIGMA] = classWithGaussianMF.Sigma; } else if (clazz is CoreLogic.Classes.ClassWithGeneralisedBellMF) { classModel.type = MF_GENERALISED_BELL; var classWithGeneralisedBellMF = clazz as CoreLogic.Classes.ClassWithGeneralisedBellMF; classModel.@params[MF_GENERALISED_BELL_A] = classWithGeneralisedBellMF.A; classModel.@params[MF_GENERALISED_BELL_B] = classWithGeneralisedBellMF.B; classModel.@params[MF_GENERALISED_BELL_C] = classWithGeneralisedBellMF.C; } else if (clazz is CoreLogic.Classes.ClassWithSigmoidDifferenceMF) { classModel.type = MF_SIGMOID_DIFF; var classWithSigmoidDifferenceMF = clazz as CoreLogic.Classes.ClassWithSigmoidDifferenceMF; classModel.@params[MF_SIGMOID_DIFF_A1] = classWithSigmoidDifferenceMF.A1; classModel.@params[MF_SIGMOID_DIFF_A2] = classWithSigmoidDifferenceMF.A2; classModel.@params[MF_SIGMOID_DIFF_C1] = classWithSigmoidDifferenceMF.C1; classModel.@params[MF_SIGMOID_DIFF_C2] = classWithSigmoidDifferenceMF.C2; } else { throw new ArgumentException($"Attempt to handle an unknown type: {clazz.GetType().FullName}."); } return classModel; }