Помогите упростить класс MathFuction - C#
Формулировка задачи:
даже не спрашивайте зачем мне это надо ну там короче это связано с математическим интерпретатором... типа будет коллекция функций таких
в общем посмотрите пожалуйста что еще можно упростить? и еще почему у меня не получается для проверки типа функции юзать оператор is? пишет "никогда не будет иметь тип double", хотя она как раз таки имеет тип double
public class MathFuction
{
public MulticastDelegate Function { get; private set; }
public int CountOfArguments { get; private set; }
public string Name { get; private set; }
public MathFuction(MulticastDelegate function)
: this(function, function.Method.Name)
{
}
public MathFuction(MulticastDelegate function, string name)
{
Function = function;
var parameters = function.Method.GetParameters();
var parametersDouble = parameters.Where(info => info.ParameterType.Name.Equals("Double")).ToArray();
if (parameters.Length != parametersDouble.Length || !function.Method.ReturnType.Name.Equals("Double"))
throw new ArgumentException("function");
CountOfArguments = parameters.Length;
Name = name;
}
public double Invoke(params double[] args)
{
if (args.Length != CountOfArguments)
throw new ArgumentException("args");
return (double)Function.DynamicInvoke(args);
}
}Решение задачи: «Помогите упростить класс MathFuction»
textual
Листинг программы
/* 16 */ var parametersDouble = parameters.Where(info => info.ParameterType is double).ToArray(); /* 18 */ if (parameters.Length != parametersDouble.Length || !(function.Method.ReturnType is double))