简体   繁体   中英

C# dll System.Reflection.TargetInvocationException error

I'm new on vs C#. I want to create dll file too use meta trader 5. my dll correct working in visual studio. But not working in meta trader.

Problem is Newtonsoft.Json packages.

Code

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;}
    }
}

Error : enter image description here

When creating a DLL for an external program which does not support Newtonsoft.Json, you cannot build it this way.

Remove the reference to Newtonsoft.Json from your program.

Add a reference to System.Runtime.Serialization

After that you can refactor your code to:

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;}
        }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM