C# значение не сохраняется в аксессоре

У меня есть 4 файла класса Класс драйвера (содержит метод main) Класс UserInput (содержит методы GenerateLines & TxtLoadFile) FileHandling.class(содержит методы LoadFile & LoadingFile) Класс шифрования (на данный момент пустой класс)

Моя проблема в том, что я пытаюсь заставить пользователя выбирать, из какого каталога из трех выбрать файл. После выбора я хочу, чтобы они вводили имя файла (.txt), а когда это будет сделано, я хочу, чтобы это значение сохранялось и передавалось в класс FileHandling, а средство доступа LoadFile сохраняет значение в переменной 'TxtFile'. Затем я хочу использовать 'TxtFile' в методе LoadingFile для загрузки файла. Проблема заключается в том, что значение сохраняется в классе UserInput, но когда я вызываю метод LoadingFile в классе Driver, оно сбрасывает значение.

Имейте в виду, что я все еще учусь на C#, поэтому, возможно, это не самая лучшая программа, так как я просто тренируюсь для выполнения задания.

РЕДАКТИРОВАТЬ: я забыл упомянуть, что я проверял это через отладчик, но я не мог понять, как это исправить

Класс водителя:

namespace UniAssignVigereneCipher
{
    class Driver
    {
        static void Main(string[] args)
        {
            UserInput UI = new UserInput();
            Crypting CR = new Crypting();
            FileHandling FH = new FileHandling();

            Console.WriteLine(UI.test);
            Console.WriteLine(UI.test2);
            FH.LoadingFile();

        }
    }
}

Класс UserInput:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace UniAssignVigereneCipher
{
    class UserInput
    {
        public string test = GenerateLines();
        public string test2 = TxtLoadFile();

        public static string GenerateLines()
        {
            string input;
            Console.WriteLine("Would you like to encrypt/decrypt a .txt(t) file  or a piece text string(s)?\r\nPlease type (t) or (s)");
            input = Console.ReadLine();

            switch (input)
            {
                case "t":
                case "T":
                    Console.WriteLine("You have selected a txt file.");
                    break;
                case "s":
                case "S":
                    Console.WriteLine("You have selected to input your own text string.");
                    break;
                default:
                    break;
            }

            return input;

        }
        public static string TxtLoadFile()
        {
            FileHandling Location = new FileHandling();
            int n;
            string FileInput;
            string TxtFileLoc;
            Console.WriteLine("Please choose the location of the .txt file you would like to load from.\r\n1 (Current Location): {0} \r\n2 (Desktop): {1} \r\n3 (My Documents): {2}",  Location.CurrentDir, Location.DesktopPath,Location.DocumentsPath);
            FileInput = Console.ReadLine();
            bool test = int.TryParse(FileInput, out n);

            switch (n)
            {
                case 1:
                    Console.WriteLine("File Location: {0} \r\nName of file to load: ", Location.CurrentDir);
                    TxtFileLoc = Console.ReadLine();
                    Location.LoadFile = Location.DesktopPath + "\\" + TxtFileLoc;
                    break;
                case 2:
                    Console.WriteLine("File Location: {0} \r\nName of file to load: ", Location.DesktopPath);
                    TxtFileLoc = Console.ReadLine();
                    Location.LoadFile = Location.DesktopPath + "\\" + TxtFileLoc;
                    break;
                case 3:
                    Console.WriteLine("File Location: {0} \r\nPName of file to load: ", Location.DocumentsPath);
                    TxtFileLoc = Console.ReadLine();
                    Location.LoadFile = Location.DocumentsPath + "\\" + TxtFileLoc;
                    break;
                default:
                    break;
            }         
            return FileInput;
        }
    }
}

Класс FileHandling

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace UniAssignVigereneCipher
{
    class FileHandling
    {
        public string DesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        public string DocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        public string CurrentDir = Environment.CurrentDirectory;



        string TxtFile;

        public string LoadFile
        {
            get
            {
                return TxtFile;
            }
            set
            {
                TxtFile = value;
            }
        }

        public void LoadingFile()
        {
            Console.WriteLine("name:" + TxtFile);
            StreamReader LF = new StreamReader(TxtFile);
            string FileContent = LF.ReadLine();
            Console.WriteLine(FileContent);
        }
    }
}

1 ответ

Пытаться:

    static void Main(string[] args)
    {
        UserInput UI = new UserInput();
        Crypting CR = new Crypting();
        FileHandling FH = new FileHandling();

        Console.WriteLine(UI.test);
        Console.WriteLine(UI.test2);
        FH.LoadFile = UI.test2;
        FH.LoadingFile();
    }

Примечание: очень странно помещать ваши рабочие методы в конструкцию класса. вероятно, было бы лучше назвать их так:

        UserInput UI = new UserInput();
        string textFile = UI.TxtLoadFile();
        //... later on...
        FH.LoadFile = textFile;
Другие вопросы по тегам