Как преобразовать строку в ICandle? C#

#c# #wpf #mvvm

#c# #wpf #mvvm

Вопрос:

MVVM, WPF, C#

Я делаю TraidingPlatform и использую FancyCandle.

У меня есть ObservableCollection ICandle

Теперь мне нужно сохранить и открыть мой файл. Сохранение было выполнено

 public RelayCommand SaveCommand
    {
        get
        {
            return _saveCommand ??
                (_saveCommand = new RelayCommand(() =>
                {
                    var result = new List<string>();
                    for (int i = 0; i < ChartView.Count; i  )
                    {
                        result.Add(ChartView[i].t.ToString());
                        result.Add(ChartView[i].L.ToString());
                        result.Add(ChartView[i].H.ToString());
                        result.Add(ChartView[i].O.ToString());
                        result.Add(ChartView[i].V.ToString());
                        result.Add(ChartView[i].C.ToString());
                    }
                    fileManager.RewriteAllLines(FilePath, result.Select(x => x.ToString()).ToList());
                }));
        }
    }
 

Но теперь я не понимаю, как преобразовать из списка в ICandle

 public List<string> GetManyFiles()
    {
        return fileManager.ReadAllLines(FilePath);
    }
    public RelayCommand LoadCommand
    {
        get
        {
            return _loadCommand ??
                (_loadCommand = new RelayCommand(() =>
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();                      
                    openFileDialog.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";
                    bool? response = openFileDialog.ShowDialog();
                if (response == true)
                {
                    var vals = GetManyFiles();
                    var result = new ObservableCollection<ICandle>();
                    for (int i = 0; i < vals.Count; i  )
                    {
                    }
                    ChartView = resu<
                }
                }));
        }
    }
 

Пожалуйста, помогите мне, спасибо.

Комментарии:

1. Чтобы сохранить и восстановить объект, см. раздел сериализация.

2. Я знаю, что это можно сделать без сериализации, но я не могу догадаться, как ))

3. Вы выполняете сериализацию, просто вы не используете стандартный формат, такой как xml или json.

4. «Я знаю, что это можно сделать без сериализации, но я не могу догадаться, как ))» — Тогда у вас совершенно другая проблема. Откуда вы «знаете», что это можно сделать «без сериализации»? Почему вы «угадываете» вместо того, чтобы искать документацию?

Ответ №1:

Извините

Я был не совсем прав

Я сделал

 public RelayCommand LoadCommand
    {
        get
        {
            return _loadCommand ??
                (_loadCommand = new RelayCommand(() =>
                {
                    OpenFileDialog openFileDialog = new OpenFileDialog();                      
                    openFileDialog.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";
                    bool? response = openFileDialog.ShowDialog();
                    if (response == true)
                    {
                        ChartView.Clear();
                        //$"{item.O}|{item.H}|{item.L}|{item.C}|{item.t}|{item.V}"
                        var vals = GetManyFiles();
                        foreach(var item in vals)
                        {
                            var args = item.Split('|');
                            ChartView.Add(new Candle(DateTime.Parse(args[4]),
                                                    Convert.ToDouble(args[0]),
                                                    Convert.ToDouble(args[1]),
                                                    Convert.ToDouble(args[2]), 
                                                    Convert.ToDouble(args[3]), 
                                                    Convert.ToInt64(args[5])));
                        }
                    }
                }));
        }
    }