Как написать список объектов в текстовый файл только со свойствами? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь записать свой список в текстовый файл. Но вместо того, чтобы добавлять свойства моего объекта списка объектов. Как просто Animal.Name, Animal.Number et c. Он также добавляет текст ToString () перед каждым свойством.

Как мне предотвратить это? Я знаю, что могу сделать txt.Write (animal.Name, animal.Number et c.), Но я не могу просто исключить значения 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.

1 Ответ

1 голос
/ 24 апреля 2020

Вы можете добавить другой метод ToShortString():

 public string ToShortString()
{
            string info = ChipRegistrationNumber + DateOfBirth + Name + IsReservedString + Gender;
            return info;
}

Затем вы можете вызвать этот метод в вашем l oop:

foreach(Animal animals in Animals)
            {
                Txt.Write(animals.ToShortString() + "\n");
            }

Если ваши свойства ваших Animal изменение класса часто, вы также можете использовать отражение. Но это снизит вашу производительность.

public string ToShortString()
{
            PropertyInfo[] properties = GetType().GetProperties();
            StringBuilder result = new StringBuilder();
            foreach(var prop in properties)
            {
                result.Append(prop.GetValue(this));
            }
            return result.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...