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