假设我有这个类,并且所有方法都已正确实现(在这种情况下,我认为实现对该问题没有任何意义)。
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
我收到了以下错误消息:Inconsistent accessibility: parameter type 'RP.mgrRPconfigGraph' is less accessible than method 'Shadow.ZedGraphHelper.AdjustGraphParam(ZedGraph.ZedGraphControl, RP.mgrRPconfigGraph)'
此方法出现在我刚才包含的类声明中。该方法为public static void
。
为什么我收到此错误?公众会改变代码行为中的任何内容吗?
答案 0 :(得分:2)
是RP.mgrRPconfigGraph
是内部类型(或者不太容易访问)。因此,当您将ZedGraphHelper
更改为public
时,它会将其方法公开为公开,并将其标记为public
。由于参数为AdjustGraphParam
internal type
方法执行此操作
将方法设为内部
internal static void AdjustGraphParam(ZedGraph.ZedGraphControl zGraph, RP.mgrRPconfigGraph mgr)
{ throw new NotImplementedException; }
或将RP.mgrRPconfigGraph
类型标记为公开
答案 1 :(得分:0)
类的默认访问修饰符为internal
。
这意味着,如果省略访问修饰符,则该类将是内部的。
如果将类更改为公共类,则会出现此错误,因为类中存在的方法之一是内部类型。
这意味着您的课程不能公开,因为它取决于内部类型,这种类型比您的课程更难以访问。 (内部类型只能在声明它的程序集中使用,而公共类可以在任何地方使用)。