Вставить код С# из переменной в сниппет C#

DanSaf

Client
Регистрация
11.01.2016
Сообщения
23
Благодарностей
100
Баллы
28
Появилась необходимость брать код из переменной и вставлять в сниппет C#, так как код постоянно меняется при выполнении шаблона.

В переменной Code находится C# код, нужно этот код вставить в сниппет C#.
Вставляю в сниппет C#, код: {-Variable.Code-};
Далее запускаю шаблон, В PM работает, форма открывается, а в ZP не работает, форма не открывается и шаблон выполняется дальше.
В ZP не работает как я понял из-за ошибки: Используется макрос {-Variable.Code-}. В C# коде нельзя использовать макросы.

Но почему тогда в PM всё работает?
Порывшись по поиску, нашел единственную наводку , там объясняется как вставить c# код из файла в сниппет с# с помощью .dll файла, но так и не разобрался.
Как реализовать, чтобы работало в ZP?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Так делать нельзя.
Код компилируется при старте шаблона.
Создавайте свои методы в Общем коде и вызывайте их используя переменные в качестве параметров
 
  • Спасибо
Реакции: Kostass

ikibostus

Client
Регистрация
27.09.2015
Сообщения
256
Благодарностей
26
Баллы
28
Подскажите, как можно вставить переменную в этот сниппет (переменную достаю из списка
var ProxyList = project.Lists["list"];
lock(SyncObjects.ListSyncer)
{
var proxy = ProxyList[0];
ProxyList.RemoveAt(0);
project.Variables["proxy"].Value = proxy.ToString();
}
):

var resultHttpGet = ZennoPoster.HttpGet("https://ССЫЛКА.ru/Переменная/", instance.GetProxy(), "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,30000,"","",true,1,new string[] {""},"");
if (String.IsNullOrEmpty(resultHttpGet))
throw new Exception("не смогли загрузить страницу");

var matches = Regex.Matches(resultHttpGet,@"[\wа-я]+").Cast<Match>().Select(match => match.Value).ToList();;
return string.Join("\r\n",matches);
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 451
Благодарностей
1 885
Баллы
113
Подскажите, как можно вставить переменную в этот сниппет (переменную достаю из списка
var ProxyList = project.Lists["list"];
lock(SyncObjects.ListSyncer)
{
var proxy = ProxyList[0];
ProxyList.RemoveAt(0);
project.Variables["proxy"].Value = proxy.ToString();
}
):

var resultHttpGet = ZennoPoster.HttpGet("https://ССЫЛКА.ru/Переменная/", instance.GetProxy(), "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,30000,"","",true,1,new string[] {""},"");
if (String.IsNullOrEmpty(resultHttpGet))
throw new Exception("не смогли загрузить страницу");

var matches = Regex.Matches(resultHttpGet,@"[\wа-я]+").Cast<Match>().Select(match => match.Value).ToList();;
return string.Join("\r\n",matches);
Код:
 ZennoPoster.HttpGet("https://ССЫЛКА.ru/"+project.Variables[a].Value+"/", instance.GetProxy(),
 

ikibostus

Client
Регистрация
27.09.2015
Сообщения
256
Благодарностей
26
Баллы
28
Спасибо, все получилось!
 

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Так делать нельзя.
Код компилируется при старте шаблона.
Создавайте свои методы в Общем коде и вызывайте их используя переменные в качестве параметров
Подскажите пожалуйста где подробнее почитать как это сделать, т.к. я не силен в С#.
У меня такой код
Код:
string url="{-Variable.url_namder-}";
string file = @"{-Project.Directory-}comment.txt";
string fname = "{-Variable.randomname-}.gif";
Соответственно не могу разобраться, как эти переменные менять во время выполнения шаблона! :(

UPD:
Разобрался делаю вот так:

Код:
string url=project.Variables["url_namder"].Value;
string file = @"{-Project.Directory-}comment.txt";
string fname=project.Variables["randomname"].Value;
Но теперь другая фигня! В ProjectMaker работает без ошибочно, а вот ZennoPoster, судя по всему не получает url ((
 
Последнее редактирование:

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
Но теперь другая фигня! В ProjectMaker работает без ошибочно, а вот ZennoPoster, судя по всему не получает url ((
ребят помогите плизз разобраться с чем связано может быть ?
 

Kostass

Client
Регистрация
20.12.2010
Сообщения
144
Благодарностей
9
Баллы
18
проблема в строчке string file = @"{-Project.Directory-}comment.txt";
Прописал путь без переменной все заработало! Подскажите как правильно вставить директорию проекта в снипет?
 

404

Client
Регистрация
23.09.2011
Сообщения
113
Благодарностей
60
Баллы
28
Код:
var file = project.Directory + @"\comment.txt";
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)