Я моделирую некоторые финансовые продукты, и каждый продукт имеет свою формулу ценообразования. В приложении я хотел бы разрешить конечному пользователю создать свой собственный продукт с помощью формулы. И эта формула может использоваться моей заявкой для оценки продукта.Как разрешить конечным пользователям создавать собственные функции?
Что-то вроде:
Formula as string = "f(x) = x * 2"
Dim Result as double = call(Formula, 1)
Я знаю, что это возможно в Matlab:
f="@(x)(x*2)";
Result = feval(f,1);
Я написал класс в Matlab, который реализует эту функцию и интегрировать его в проект VB.Net, но каждый функция выполняет 4700 раз выполнение одной и той же функции, непосредственно написанной на VB.Net, которая не является доступной в отношении потребностей бизнеса.
Возможно ли это в .Net?
вы можете посмотреть на [DynamicMethod Class] (http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod (v = vs.110) .aspx), но это может быть чем вы хотите. Несколько лет назад у меня была такая же потребность в клиенте, и выяснилось, что примерно в 80% случаев они использовали один и тот же набор функций снова и снова только с разными аргументами. Я закончил создание набора из них, а затем пусть они выбирают формулу по имени и задают значения arg. Затем используйте оператор CASE для отправки аргументов в нужную функцию. NET, возможно, имеет более чистый способ. – Plutonix
На самом деле это то, чего я хочу избежать: Case case, потому что потребность может включать в себя совершенно разные формулы каждый раз ... –
Что делать, если они написали функции в VB.NET (Express Edition является бесплатным)? Они могут создавать библиотеку классов, а затем сообщать вам об этом. –