如何仅使用属性将对象列表写入文本文件?
How to write object list to textfile with just the properties?
我正在尝试将列表写入 txt 文件。但不是添加我的列表对象项的属性。
就像 Animal.Name、Animal.Number 等。它还在每个 属性.
前面添加了 ToString() 文本
如何防止这种情况发生?我知道我可以 txt.Write(animal.Name, animal.Number 等) 但我不能简单地排除 ToString 值吗?
public void Save(string fileName)
{
Txt = new StreamWriter(@"path" + fileName);
foreach(Animal animals in Animals)
{
Txt.Write(animals + "\n");
}
Txt.Close();
}
这是我的 ToString():
public override ToString()
{
string info = "Animal ID: " + ChipRegistrationNumber
+ "\nAnimal Birthdate: " + DateOfBirth
+ "\nAnimal Name: " + Name
+ "\nAnimal Status: " + IsReservedString
+ "\nAnimal Gender: " + Gender;
return info;
}
我的文本文件中的当前输出是:
Animal ID: 0
Animal Birthdate: 10-12-1999
Animal Name: Snoopy
Animal Status: Not reserved
Animal Gender: Male
Days since last walk: 34
Dog Price: €200,00
所以我只想要列表中的对象数据而不是 ToString。
您可以添加另一种方法ToShortString()
:
public string ToShortString()
{
string info = ChipRegistrationNumber + DateOfBirth + Name + IsReservedString + Gender;
return info;
}
然后你可以在你的循环中调用这个方法:
foreach(Animal animals in Animals)
{
Txt.Write(animals.ToShortString() + "\n");
}
如果您的 Animal
class 属性经常变化,您也可以使用反射。但这会降低你的表现。
public string ToShortString()
{
PropertyInfo[] properties = GetType().GetProperties();
StringBuilder result = new StringBuilder();
foreach(var prop in properties)
{
result.Append(prop.GetValue(this));
}
return result.ToString();
}
我正在尝试将列表写入 txt 文件。但不是添加我的列表对象项的属性。 就像 Animal.Name、Animal.Number 等。它还在每个 属性.
前面添加了 ToString() 文本如何防止这种情况发生?我知道我可以 txt.Write(animal.Name, animal.Number 等) 但我不能简单地排除 ToString 值吗?
public void Save(string fileName)
{
Txt = new StreamWriter(@"path" + fileName);
foreach(Animal animals in Animals)
{
Txt.Write(animals + "\n");
}
Txt.Close();
}
这是我的 ToString():
public override ToString()
{
string info = "Animal ID: " + ChipRegistrationNumber
+ "\nAnimal Birthdate: " + DateOfBirth
+ "\nAnimal Name: " + Name
+ "\nAnimal Status: " + IsReservedString
+ "\nAnimal Gender: " + Gender;
return info;
}
我的文本文件中的当前输出是:
Animal ID: 0
Animal Birthdate: 10-12-1999
Animal Name: Snoopy
Animal Status: Not reserved
Animal Gender: Male
Days since last walk: 34
Dog Price: €200,00
所以我只想要列表中的对象数据而不是 ToString。
您可以添加另一种方法ToShortString()
:
public string ToShortString()
{
string info = ChipRegistrationNumber + DateOfBirth + Name + IsReservedString + Gender;
return info;
}
然后你可以在你的循环中调用这个方法:
foreach(Animal animals in Animals)
{
Txt.Write(animals.ToShortString() + "\n");
}
如果您的 Animal
class 属性经常变化,您也可以使用反射。但这会降低你的表现。
public string ToShortString()
{
PropertyInfo[] properties = GetType().GetProperties();
StringBuilder result = new StringBuilder();
foreach(var prop in properties)
{
result.Append(prop.GetValue(this));
}
return result.ToString();
}