Настройка события с помощью делегата

#c# #events

#c# #Мероприятия

Вопрос:

Здравствуйте, я создаю класс, который содержит событие и переменные :

 namespace FS
{
      public class SomeEventArgs : EventArgs
        {
            public readonly string SomeVarible;
    
            public SomeEventArgs (string someVarible)
            {
                SomeVarible= someVarible;
            }
        }
    }
  

и я хочу использовать это в другом классе :

 namespace FS
{
delegate void Example(object sender, SomeEventArgs e);
    public class OtherClass
    {

        public event Example example;
}
  

и я получаю эту ошибку :

Ошибка CS7025 Непоследовательная доступность: тип события ‘Example’ менее доступен, чем событие ‘OtherClass.example’

Ответ №1:

Вы не указали модификатор доступа, который используется по delegate void Example(object sender, SomeEventArgs e); умолчанию internal , но событие в классе OtherClass есть public .

Нелогично предоставлять что-либо другим библиотекам с public модификатором, в то время как базовый тип доступен только внутри вашей библиотеки, потому что это internal .

Самое простое решение — создать свой делегат public или ваше событие public internal , зависит от того, как вы хотите его использовать.

Вы можете найти больше о модификаторах доступа здесь, в документации.