C# Не видит переменную - new string[] {"здесь переменная"}

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8
Всем привет!
Ребят, выручайте)

Так работает:
C#:
reader.ClassesToPreserve = new string[] {"class1", "class2"};
А так не работает, но ошибок нет, просто не видит из переменной:
C#:
reader.ClassesToPreserve = new string[] {""+project.Variables["class"].Value+""};
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Всем привет!
Ребят, выручайте)

Так работает:
C#:
reader.ClassesToPreserve = new string[] {"class1", "class2"};
А так не работает, но ошибок нет, просто не видит из переменной:
C#:
reader.ClassesToPreserve = new string[] {""+project.Variables["class"].Value+""};
должно работать и так. Хотя конструкции ""+ и +"" избыточны. Больше похоже на то, что переменная пуста или в неё данные не того формата
 

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8
должно работать и так. Хотя конструкции ""+ и +"" избыточны. Больше похоже на то, что переменная пуста или в неё данные не того формата
Вот и я про это, как будто пустая. Но из переменной копирую вручную и все ок, все отрабатывает.

Возможно это как то связано с массивом. Но я не силен в этом.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Вот и я про это, как будто пустая. Но из переменной копирую вручную и все ок, все отрабатывает.

Возможно это как то связано с массивом. Но я не силен в этом.
Вот и я про это, как будто пустая. Но из переменной копирую вручную и все ок, все отрабатывает.

Возможно это как то связано с массивом. Но я не силен в этом.
напиши не абстрактные примеры работает не работает. Мб тогда будет яснее
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 781
Благодарностей
2 442
Баллы
113
Всем привет!
Ребят, выручайте)

Так работает:
C#:
reader.ClassesToPreserve = new string[] {"class1", "class2"};
А так не работает, но ошибок нет, просто не видит из переменной:
C#:
reader.ClassesToPreserve = new string[] {""+project.Variables["class"].Value+""};
Не знаю, что за объект reader.ClassesToPreserve используется.
Но, на сколько я вижу между двумя вариантами отличий нет - если что-то содержится в переменной, то данное содержимое точно будет передано.
Чтобы проверить набросал маленький класс, и проверил два варианта.
Если бы что-то не работало - то не было бы получено содержимое во втором случае.

Общий код:
public class Reader{
        IZennoPosterProjectModel project;
        string[] array;
        public Reader(IZennoPosterProjectModel project){
            this.project = project;
            this.array = new string[0];
        }
        
        public string[] ClassesToPreserve {
            get {
                return array;
            }
            set{
                array = value.ToArray();
            }
        }
        public void Log(){
            if(array.Length == 0) project.SendInfoToLog("Нет данных");
            for(int i = 0;i<array.Length;i++) project.SendInfoToLog(string.Format("Строка № {0}: {1}",i, array[i]));
        }
    }
Вызов:
Reader reader = new Reader(project);
project.SendInfoToLog("Данные без переменных");
reader.ClassesToPreserve = new string[] {"class1", "class2"};
reader.Log();

reader = new Reader(project);

project.SendInfoToLog("Данные с переменной");
reader.ClassesToPreserve = new string[] {""+project.Variables["class"].Value+""};
reader.Log();
92339
 
  • Спасибо
Реакции: Yuriy Zymlex

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8
напиши не абстрактные примеры работает не работает. Мб тогда будет яснее
Весь код:
C#:
string sourceContent = project.Variables["GET"].Value;
//var atribut = project.Variables["class"].Value;

Reader reader = new Reader(project.Variables["URL"].Value, sourceContent);
reader.ClassesToPreserve = new string[] {""+project.Variables["class"].Value+""};
reader.AddOptionToRegularExpression(Reader.RegularExpressions.Positive, "principale");
reader.ReplaceRegularExpression(Reader.RegularExpressions.Videos, @"\/\/(www\.)?(dailymotion\.com|youtube\.com|youtube-nocookie\.com|player\.vimeo\.com)");


// get the article
Article article = reader.GetArticle();

// get info about images in the article
var images = article.GetImagesAsync();
images.Wait();


//project.SendInfoToLog(String.Format("Uri: {0}", article.Uri));
project.SendInfoToLog(String.Format("Title: {0}", article.Title));
//project.SendInfoToLog(String.Format("Byline: {0}", article.Byline));
//project.SendInfoToLog(String.Format("Author: {0}", article.Author));
//project.SendInfoToLog(String.Format("Language: {0}", article.Language));
//project.SendInfoToLog(String.Format("TimeToRead: {0}", article.TimeToRead));
//project.SendInfoToLog(String.Format("Excerpt: {0}", article.Excerpt));
//project.SendInfoToLog(String.Format("TextContent:\n {0}", article.TextContent));
project.SendInfoToLog(String.Format("Content:\n {0}", article.Content));
project.SendInfoToLog(String.Format("Featured Image: {0}", article.FeaturedImage));

project.Variables["title"].Value = article.Title;
project.Variables["ContentHTML"].Value = article.Content;
project.Variables["imgHTML"].Value = article.FeaturedImage;
Содержание переменной class:
container", "menu", "menu__item", "menu__link
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 781
Благодарностей
2 442
Баллы
113
Содержание переменной class:
container", "menu", "menu__item", "menu__link
Попробуйте заменить строку на такую:
C#:
reader.ClassesToPreserve =project.Variables["class"].Value.Replace("\"", string.Empty).Split(',').Select(x=>x.Trim()).ToArray();
 
  • Спасибо
Реакции: doc и alex_mgn

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
reader.ClassesToPreserve = project.Variables["class"].Value.Split(',').Select(x=>x.Trim(new Char[]{' ', '"'}).ToArray();
Должно помочь, если с синтаксисом не закосячил
 
  • Спасибо
Реакции: alex_mgn и BAZAg

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8
  • Спасибо
Реакции: BAZAg

alex_mgn

Client
Регистрация
30.01.2021
Сообщения
48
Благодарностей
18
Баллы
8
reader.ClassesToPreserve = project.Variables["class"].Value.Split(',').Select(x=>x.Trim(new Char[]{' ', '"'}).ToArray();
Должно помочь, если с синтаксисом не закосячил
Тоже работает! Спасибо!
Только ")" пропущена была
reader.ClassesToPreserve = project.Variables["class"].Value.Split(',').Select(x=>x.Trim(new Char[]{' ', '"'})).ToArray();
 
  • Спасибо
Реакции: doc

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