C# Ошибка dll System.Reflection.TargetInvocationException - PullRequest
0 голосов
/ 11 февраля 2020

Я новичок против C#. Я тоже хочу создать файл dll, используя meta trader 5. моя dll правильная, работает в visual studio. Но не работает в метадрейдере.

Проблема в Newtonsoft.Json пакетах.

Код

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace Analiz
{
    public class anlz
    {       
        public static void metot()
        {
            var myDetails = JsonConvert.DeserializeObject<List<MyDetail>>(File.ReadAllText(@"C:\Users\Durak\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Files\json\deneme.json"));
        }
    }
    public class MyDetail
    {
        public string emirtipi{get;set;}
        public string miktar{get;set;}
        public string takip{ get; set;}
    }
}

Ошибка: введите описание изображения здесь

1 Ответ

0 голосов
/ 11 февраля 2020

При создании DLL для внешней программы, которая не поддерживает Newtonsoft. Json, вы не можете построить ее таким образом.

Удалите ссылку на Newtonsoft. Json из вашей программы.

Добавить ссылку на System.Runtime.Serialization

После этого вы можете изменить свой код на:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace Analiz
{
        public class anlz
        {       
            public static void metot()
            {
                System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(List<Test>));
                List<MyDetail> myDetails = (List<Test>)serializer.ReadObject(new FileStream(@"C:\Users\Durak\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Files\json\deneme.json", FileMode.Open, FileAccess.Read));            
            }
        }

        public class MyDetail
        {
            public string emirtipi{get;set;}
            public string miktar{get;set;}
            public string takip{ get; set;}
        }
}
...