2013-09-19 1 views
0

Позвольте сказать, что у меня есть этот класс, и все методы правильно реализованы (в этом случае я считаю, что реализация не имеет отношения к вопросу).public static class vs static class

static class ZedGraphHelper 
{ 
    public static ZedGraph.ZedGraphControl GetZedGraph(Guid config, Guid equip) 
    { throw new NotImplementedException; } 

    //This method here is the faulty one 
    public static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr) 
    { throw new NotImplementedException; } 

    public static void FillGraph(ZedGraph.ZedGraphControl zGraph, Guid config, Guid equip, Guid form) 
    { throw new NotImplementedException; } 

    public static void FillGraph(ZedGraph.ZedGraphControl zGraph, Shadow.dsEssais.FMdocDataTable dtDoc, Shadow.dsEssais.FMchampFormDataTable dtChamp) 
    { throw new NotImplementedException; } 

    public static void LoadDoc(Shadow.dsEssais.FMdocDataTable dtDoc, Guid equip, Guid form) 
    { throw new NotImplementedException; } 

    public static double LoadDonnee(Guid champ, Guid doc) 
    { throw new NotImplementedException; } 

    public static SqlDataReader ReadDonnee(Guid champ, Guid doc) 
    { throw new NotImplementedException; } 
} 

этот код скомпилировать и установить без ошибок. Как всегда, если я изменить объявление класса от

static class ZedGraphHelper 

в

public static class ZedGraphHelper 

я получил сообщение об ошибке folowing: Inconsistent accessibility: parameter type 'RP.mgrRPconfigGraph' is less accessible than method 'Shadow.ZedGraphHelper.AdjustGraphParam(ZedGraph.ZedGraphControl, RP.mgrRPconfigGraph)' этот метод присутствует в объявлении класса я включил только здесь. Метод public static void.

Почему я получаю эту ошибку? И общественность ничего не меняет в поведении кода?

+2

'RP.mgrRPconfigGraph' должен быть общедоступным. –

+0

@MuctadirDinar без какого-либо ключевого слова доступность по умолчанию «защищена»? В моем случае я думаю, что ключевое слово public is't revelant –

+0

Извините. Я понял, что мой комментарий полностью посвящен теме. и удалил его. – Muctadir

ответ

2

Да RP.mgrRPconfigGraph является внутренним (или менее доступным). Поэтому, когда вы меняете ZedGraphHelper на public, он раскрывает свои методы как общедоступные, которые обозначены как public. которые вы не можете сделать для AdjustGraphParam метода, поскольку параметр internal type

Либо сделать метод внутреннего

internal static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr) 
{ throw new NotImplementedException; } 

Или отметьте RP.mgrRPconfigGraph типа как общественный

0

модификатором доступа по умолчанию для класса является internal. Это означает, что если вы опустите модификатор доступа, класс будет внутренним.

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

Это означает, что ваш класс не может быть общедоступным, поскольку он зависит от внутреннего типа, который менее доступен, чем ваш класс. (Внутренний тип может использоваться только в сборке, в которой он был объявлен, в то время как общедоступный класс может использоваться повсеместно).