Изменить путь к файлу объекта CS-Script AsmHelper
Я использую класс AsmHelper в библиотеке CS-Script. Мне интересно, как использовать только один объект AsmHelper и просто изменить путь к файлу, используя CSScript.LoadCode
так что я могу загрузить новый скрипт после того, как предыдущий будет выполнен, но только с одним объектом AsmHelper. Прямо сейчас, как показано ниже, у меня есть четыре объекта AsmHelper.
AsmHelper transform1 = new AsmHelper
(CSScript.LoadCode(@"CS-Scripts\parent.cs", null, true));
ITransform engine1 = (ITransform)transform1.CreateObject("Script");
AsmHelper transform2 = new AsmHelper
(CSScript.LoadCode(@"CS-Scripts\bYear.cs", null, true));
ITransform engine2 = (ITransform)transform2.CreateObject("Script");
AsmHelper transform3 = new AsmHelper
(CSScript.LoadCode(@"CS-Scripts\fInitial.cs", null, true));
ITransform engine3 = (ITransform)transform3.CreateObject("Script");
AsmHelper transform4 = new AsmHelper
(CSScript.LoadCode(@"CS-Scripts\pet.cs", null, true));
ITransform engine4 = (ITransform)transform4.CreateObject("Script");
Вот интерфейс, который идет с этим при необходимости:
public interface ITransform
{
User Transform(User record);
}
Если вы хотите, чтобы я предоставил дополнительную информацию, просто спросите ниже.
1 ответ
Вы не должны повторно использовать AsmHelper
, Он был разработан в первые дни для одного сценария использования. Вот почему это IDSposable.
Ответственность AsmHelper заключается в доступе к методам сценария с помощью модели вызова Dispatch, обработке определенных сборок сценария и разгрузке сборки сценария при его загрузке в удаленный домен приложения.
Поскольку вы не используете ни одну из этих функций, вам гораздо лучше, если использовать более новые API:
var engine1 = (ITransform)CSScript.LoadCode(@"CS-Scripts\parent.cs", null, true)
.CreateObject("Script");
var engine2 = (ITransform)CSScript.LoadCode(@"CS-Scripts\bYear.cs", null, true)
.CreateObject("Script");
var engine3 = (ITransform)CSScript.LoadCode(@"CS-Scripts\fInitial.cs", null, true)
.CreateObject("Script");
var engine4 = (ITransform)CSScript.LoadCode(@"CS-Scripts\pet.cs", null, true)
.CreateObject("Script");
Если вы установите пакет CS-Script NuGet, он добавит в ваш проект VS несколько примеров файлов, демонстрирующих эти приемы.