C# 从对象数组读取字符串数组的FileHelper

C# 从对象数组读取字符串数组的FileHelper,c#,arrays,string,object,filehelpers,C#,Arrays,String,Object,Filehelpers,我遇到的问题是试图从FileHelpers类生成的对象数组中读取字符串数组 这是我的文件助手类代码: [DelimitedRecord(",")] public class test { [FieldDelimiter(":")] public string header; public string[] phStrArray; } 然后我尝试从对象中获取字段 string line="pie,cherry,berry:,cake,carrot,vanilla"; F

我遇到的问题是试图从FileHelpers类生成的对象数组中读取字符串数组

这是我的文件助手类代码:

[DelimitedRecord(",")]
public class test
{
    [FieldDelimiter(":")]
    public string header;

    public string[] phStrArray;
}
然后我尝试从对象中获取字段

string line="pie,cherry,berry:,cake,carrot,vanilla";
FileHelperEngine engine= new FileHelperEngine(className);
var test =engine.ReadString(line);
Object myObject = test[0];
FieldInfo[] fields = className.GetFields();
var objTempValue = fields[1].GetValue(myObject);
tempValue += Convert.ToString(objTempValue);
这对于常规字符串变量非常有效,但是当它涉及到字符串数组时,它将只返回System.string[]。总的来说,我只是不知道如何将该字符串数组读入一个字符串,或者使其成为一个实际的字符串数组,我实际上可以从中获取数据。我觉得我在考虑如何从中获取数据

提前谢谢你的帮助

编辑:请原谅,我应该写得更清楚一点,这就是我使用var得到的结果。问题是变量objTempValue变成了对象{string[]}的类型。这就好像对象持有一个字符串数组,似乎没有办法找到它。这就是我需要转换为字符串或从中获取数据的变量

更新:另一种方法是将其转换为字符串数组,如下所示

string[] arr = ((IEnumerable<object>)objTempValue).Cast<object>()
                                                  .Select(x => x.ToString())
                                                  .ToArray();
我不完全确定哪个选项更好,但这个选项和答案似乎都很有效。

您可以使用String.Join将字符串数组转换为单个字符串:

string line = String.Join(",", phStrArray);
第一个参数是要使用的分隔符

注:反向操作可能是:

string[] arr =  line.Split(',');
编辑:如果变量静态类型为object,则必须将其转换为运行时类型:

object objTempValue =  new string[] { "pie", "cherry", "berry" };
string line = String.Join(",", (string[])objTempValue);
// line ==> "pie,cherry,berry"
在C语言中,通过将类型放在术语前面的括号中,可以转换为另一种类型:

object obj = 5; // System.Int32
int i = (int)obj;

当然,类型必须与存储在变量中的实际值兼容。对于值类型,将其指定给对象变量涉及装箱,回溯涉及取消装箱。请参阅和

将数组转换为字符串非常简单:string.Join,myArray;分隔符在哪里。对不起,我应该在我的帖子中添加一个更好的解释。问题不是一个普通的字符串数组,而是一个变量,它的对象类型是{string[]}。啊,太简单了,谢谢。我也找到了另一种方法,但你的方法简单多了。