Можем ли мы вызвать событие из открытого статического метода в том же классе? - PullRequest
0 голосов
/ 28 октября 2019

Пытаясь понять концепцию событий.

Возможно ли вызвать публичное событие из статической функции того же класса в моем коде ниже? это работает, если я использую экземпляр класса программы.

Я оставляю ключевое слово " This ", так как оно есть для вашего обзора, так как я не знаю, какой объект для отправителя , чтобы положить туда. Я уже проверил это Как вызвать публичное событие из статической функции в том же классе? , но не понял концепции.

Дайте мне знать, если это возможно, что я пытаюсьделать и как?

using System;

namespace CSharp_ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            loggingInProgramClass = OnLoggingEvent;
            ShowLogging();
        }

        public static event DMethod_ShowCategory_ShowLogging_Event loggingInProgramClass;
        public static void ShowLogging()
        {
            Console.WriteLine("Show Logging method executed...");
            loggingInProgramClass(**this**, new EventArgs());
        }

        private static void OnLoggingEvent(**object sender**,EventArgs e)
        {
            Console.WriteLine("Event triggered...");
        }
    }
}

1 Ответ

1 голос
/ 28 октября 2019

Ваша проблема в том, что у вас нет sender для EventHandler делегата. Быстрое решение состоит в том, чтобы просто передать null как sender, или вы можете использовать что-то вроде Action<EventArgs> в качестве делегата и не требовать отправителя.

...