Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中将数据协定类列表转换为整数数组_C#_Wcf - Fatal编程技术网

C# 如何在C中将数据协定类列表转换为整数数组

C# 如何在C中将数据协定类列表转换为整数数组,c#,wcf,C#,Wcf,我正在尝试将DataContract类的列表转换为C中的整数数组。 当我尝试这样做时,我得到了下面的错误 错误CS0411:方法的类型参数 'System.Array.ConvertAllTInput[], 无法从用法推断System.Converter。 尝试显式指定类型参数 你能告诉我如何解决这个错误吗。 TopicDetails是一个包含ObjectsString的数据协定类 List<TopicDetails> topicDetails3; Topi

我正在尝试将DataContract类的列表转换为C中的整数数组。 当我尝试这样做时,我得到了下面的错误

错误CS0411:方法的类型参数 'System.Array.ConvertAllTInput[], 无法从用法推断System.Converter。 尝试显式指定类型参数

你能告诉我如何解决这个错误吗。 TopicDetails是一个包含ObjectsString的数据协定类

 List<TopicDetails> topicDetails3;
            TopicDetails[] arr = topicDetails3.ToArray();  
            int[] ints = Array.ConvertAll(arr,int.Parse);


//topicDetails is a data-contract
CreateSubscriptions<List<TopicDetails>(topicDetails);

//Here TopicDetails is a class (data contract) as follows.

public class TopicDetails
{
    protected object baseObjectType;  //string
    protected object topic;            //string

    public TopicDetails();

    [DataMember]
    public object BaseObjectType { get; set; }
    [DataMember]
    public object TopicID { get; set; }

    public static TopicDetails CreateTopic<T, mT>(IComparable<T> objectType, IComparable<mT> objectID);
}

很明显,代码是错误的。不能像以下操作那样将TopicDetails数组强制转换为int数组:

TopicDetails[] arr = topicDetails3.ToArray();  
int[] ints = Array.ConvertAll(arr,int.Parse);
我不确定,但我想你想要所有主题细节的ID。 不能使用int.Parse,因为它只接受字符串。为此,需要使用静态类System.Convert


下面的代码似乎在回答我的问题。请看一看

            int[] data;

            var obj = topicDetails;// topicDetails= new List<TopicDetails> { };// List of DataContracts{ BaseObjectType = ":EQUIPMENT", TopicID = "42" };
            var serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(List<TopicDetails>));

            using (var stream = new System.IO.MemoryStream())
            {
                serializer.WriteObject(stream, obj);

                data = new int[stream.Length];
                stream.Position = 0;

                for (int i = 0; i < data.Length; i++)
                    data[i] = stream.ReadByte();
            }

没有显示失败的代码也没有帮助,我们也不知道从何处获取整数…实际上我希望列表是一个整数数组。可能吗?因为我需要把这个整数数组传递给C++,它通过托管C++ +C++/CLI接受参数const vector和optList.如果我使用你提供的代码,我会得到以下错误。你能告诉我怎么解决这个问题吗。错误CS0411:无法从用法推断方法“System.Array.ConvertAllTInput[],System.Converter”的类型参数。尝试显式指定类型参数。很抱歉,我遗漏了一些内容。但是我可以将整个列表转换为整数数组吗?这里的TopicDetails是一个数据契约类。我们可以将列表转换为XML字符串,然后将其转换为整数数组吗?因为我需要把TopicDetails中的数据列表类传递给C++ + CLI,然后再到C++ const vector和optListSuffy,我不能跟上。我的代码为您提供了一个int数组,您可以将其传递给C++/CLI方法。无法将列表TopicDetails转换为int,因为它不可转换。好的。但是我可以将公共对象BaseObjectType{get;set;}转换为整数数组吗?据我所知,BaseObjectType是一个字符串Ex::EQUIPMENT。但当我将其转换为整数数组时,它给出了异常,因为输入字符串的格式不正确。有什么想法吗?我正在使用下面的代码。TopicDetails[]arr=TopicDetails.ToArray;int[]ints=Array.ConvertAllarr.Selectt=>t.BaseObjectType.ToArray,System.Convert.ToInt32;
            int[] data;

            var obj = topicDetails;// topicDetails= new List<TopicDetails> { };// List of DataContracts{ BaseObjectType = ":EQUIPMENT", TopicID = "42" };
            var serializer = new System.Runtime.Serialization.DataContractSerializer(typeof(List<TopicDetails>));

            using (var stream = new System.IO.MemoryStream())
            {
                serializer.WriteObject(stream, obj);

                data = new int[stream.Length];
                stream.Position = 0;

                for (int i = 0; i < data.Length; i++)
                    data[i] = stream.ReadByte();
            }