Хранить в переменной вместо записи в консоль? - PullRequest
0 голосов
/ 22 июня 2011

См. GitHub

static void Main(string[] args)
{
    // do something...

    service.Feedback += new FeedbackService.OnFeedback(service_Feedback);
}

static void service_Feedback(object sender, Feedback feedback)
{
    Console.WriteLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken));
}

Вместо вывода для отображения в консоли, как сохранить его в переменной, чтобы оно могло быть в основной программе?

Ответы [ 3 ]

2 голосов
/ 22 июня 2011

Ну, вам нужно объявить переменную:

static Feedback lastFeedback;

, а затем просто назначьте его в методе:

static void service_Feedback(object sender, Feedback feedback)
{
    lastFeedback = feedback;
}

Возможно, вы захотите сделать это List<Feedback> вместо сохранения только последнего полученного отзыва.

Обратите внимание, что если задействовано несколько потоков, вам нужно будет проявить особую осторожность, особенно если вы используете коллекцию. (List<T> не является потокобезопасным.)

Конечно, у вас нет , чтобы использовать метод для обработчика событий:

service.Feedback += (sender, feedback) => lastFeedback = feedback;

Это зависит от того, насколько вам удобно с лямбда-выражениями. Даже если вы не хотите делать это встроенным образом, вы все равно можете немного упростить существующую подписку на обработчик, используя преобразование группы методов:

service.Feedback += service_Feedback;
1 голос
/ 22 июня 2011

Использование лямбды:

class Program
{
    static string feedback; // string to store formatted string, use type Feedback to store the variable itself

    static void Main(string[] args)
    {
        service.Feedback += (s,f) => feedback = String.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken);
    }
}

или классика:

static void service_Feedback(object sender, Feedback f)
{
   feedback = string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken);
}

Это будет хранить только последний отзыв.

0 голосов
/ 22 июня 2011
static void Main(string[] args)
{
    // do something...

    service.Feedback += new FeedbackService.OnFeedback(service_Feedback);
}

static StringBuilder sb = new StringBuilder();
static void service_Feedback(object sender, Feedback feedback)
{
    sb.AppendLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken));
}
...