Подтвердить что ты не робот

Несогласованная ошибка доступности со следующим кодом С#. Зачем?

Что происходит со следующим кодом С#? Компилятор сообщает об этой ошибке:

Непоследовательная доступность: тип параметра 'ClassLibrary1.Interface1' менее доступен, чем метод 'ClassLibrary1.Class1.Class1 (ClassLibrary1.Interface1)'

со следующим кодом:

interface Interface1<T>
{
    bool IsDataValid();
    /* Other interfaces */
}

public class Class1<T>
{
    public Interface1<T> interface1;

    public Class1(Interface1<T> interface1)
    {
        this.interface1 = interface1;
    }

}

С тех пор я разработал свой код по-другому, используя наследование, но если бы кто-нибудь мог сказать мне, что это неправильно, я бы очень признателен.

4b9b3361

Ответ 1

ваш "интерфейс1" не является общедоступным.

public interface Interface1<T>
{
    bool IsDataValid();
    /* Other interfaces */
}

Ответ 2

Отметьте свой интерфейс как общедоступный:

public interface Interface1<T>

Если вы не укажете метку доступности, по умолчанию она будет internal, то есть доступна только для других классов в сборке.

Ответ 3

второе решение. Если ваш интерфейс не является общедоступным, не делайте свой класс общедоступным, если вы создаете дескриптор интерфейса.