как вернуть значения из одного класса в другой? - PullRequest
0 голосов
/ 10 сентября 2011

Я делаю программу, которая имеет три класса:

  1. Выходной класс получает данные от двух других классов, записывает в две новые строки, объединяет их со специальным форматированием в другую строку и выводит ее
  2. В классе AidaF есть метод, который возвращает значение (строку) каждую секунду
  3. В классе GmailF есть метод, который возвращает значение (строку) каждую минуту или около того

так что я устал от использования return string; для возврата данных из классов 2 и 3 в первый класс, но это просто возвращает значение в текущий класс, а не в первый класс.

Вот этот код, над которым я работаю, хотя и сильно уменьшился. но основы есть.

namespace Final
{
    public class Output
    {
        public static void Main()
        {
            Console.WriteLine(gml + aida);
        }
    }

    public class AidaF
    {
        private static System.Timers.Timer aTimer;

        public static void AMain()
        {
            aTimer = new System.Timers.Timer(1000);
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 1000;
            aTimer.Enabled = true;
        }


        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            ...
            reader.ReadToFollowing("value");
            aida.Append(reader.ReadElementContentAsString()).Append(",");
            return aida;
            ...
        }
    }

    public class GmaillF
    {
        private static System.Timers.Timer gTimer;

        public static void GMain()
        {
            gTimer = new System.Timers.Timer(200000);
            gTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent1);
            gTimer.Interval = 200000;
            gTimer.Enabled = true;
        }

        private static void OnTimedEvent1(object source, ElapsedEventArgs e)
        {
            CheckMail();
        }

        public static string CheckMail()
        { 
          ...
          gml.Append(reader.ReadElementContentAsString()).Append(",");
          return gml;
          ...
        }
    }
}

1 Ответ

1 голос
/ 10 сентября 2011

Вам нужно вызвать открытые статические методы из вызывающего класса, чтобы заставить это работать, поэтому, например, ваш main будет выглядеть примерно так:

public static void Main() {
Console.WriteLine(GmailF.CheckMail() + AidaF.OnTimedEvent());
}

Я просто предполагаю, что CheckMailи OnTimedEvent - строки, которые вы пытаетесь вернуть.И CheckMail, и OnTimedEvent должны быть общедоступными статическими строками, чтобы вышеуказанное работало.

...