Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Inconsistent accessibility?


Автор: Elfet 29.5.2007, 10:33
Код

    public class Polygon
    {
        public Polygon(Vector[] points, Color[] colors)
        {
            this.points = points;
            this.colors = colors;
        }

        public Polygon(Vector[] points, Color color)
        {
            this.points = points;
            this.colors = new Color[1] { color };
        }

        protected Vector[] points;

        protected Color[] colors;
    }


Цитата

Inconsistent accessibility: parameter type 'My3D.Vector[]' is less accessible than method 'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color[])'    
Inconsistent accessibility: parameter type 'My3D.Vector[]' is less accessible than method 'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color)'    


Что такое?  smile 

Автор: stab 29.5.2007, 16:28
конструкторы паблик, а типы параметров, которые им нужно передать, протектед, т.е. ты эти параметры ну никак передать не сможешь, т.к. нет доступа к их типам из внешних классов, вот тебе компилятор и говорит об этом.

Автор: marcusmae 29.5.2007, 17:17
Цитата

Inconsistent accessibility: parameter type 'My3D.Vector[]' is less accessible than method 'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color[])'    
Inconsistent accessibility: parameter type 'My3D.Vector[]' is less accessible than method 'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color)' 


Цитата

Неконсистентная доступность : тип 'My3D.Vector[]' менее доступен, чем метод
'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color[])'
Неконсистентная доступность : тип 'My3D.Vector[]' менее доступен, чем метод
'My3D.Polygon.Polygon(My3D.Vector[], System.Drawing.Color)' 


Действует правило о том, что класс ("элемент") с большей доступностью (имеется в виду private/protected/internal/protected internal/public) не может наследоваться ("зависеть") от класса ("элемента") с меньшей доступностью. Скорее всего, проблема в этом. Например, публичное поле публичного класса не может задавать экземпляр приватного класса, равно как публичный метод публичного класса не может иметь аргументы приватных типов. Следует из здравого смысла. То есть, если конструктор класса Polygon - публичный, то Vector тоже должен быть публичным.

Автор: Elfet 30.5.2007, 10:49
Угу, спасибо, разобрался!  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)