由于其保护级别,类无法访问

sco*_*ott 14 c# access-modifiers

我有三节课.all都是同一命名空间的一部分.这是三个类的基础知识.

//FBlock.cs
namespace StubGenerator.PropGenerator
{
    class FBlock : IDesignRegionInserts, IFormRegionInserts, IAPIRegionInserts,  IConfigurationInserts, ISoapProxyClientInserts, ISoapProxyServiceInserts
    {
        private List<Property> pProperties;
        private List<Method> pMethods;
        public FBlock(string aFBlockName)
        { 
            pProperties = new List<Property>();
            pMethods = new List<Method>();
        }

        public Property AddProperty(string aName)
        {
            Property loProp = new Property(this, aName, pProperties.Count);
            pProperties.Add(loProp);
            return loProp;
         }

         public Method AddMethod(string aName)
         {
             Method loMeth = new Method(this, aName);
             pMethods.Add(loMeth);
             return loMeth;
         }
     }

 //Method.cs
 namespace StubGenerator.PropGenerator
 {
     class Method : IPropertyName
     {
         private List<StubGenerator.PropGenerator.PropertyAttribute> pPropertyAttributes;
         private string pName;
         private string pFBlockName;

         public Method(FBlock aFBlock,string aName)
         {
             pPropertyAttributes = new List<PropertyAttribute>();
             pName = aName;
             pFBlockName = aFBlock.Name;
         }
      }
 }

 //Property.cs
 namespace StubGenerator.PropGenerator
 {
    class Property : StubGenerator.PropGenerator.IPropertyName, StubGenerator.PropGenerator.IDesignRegionInserts, StubGenerator.PropGenerator.IFormRegionInserts, IAPIRegionInserts, IConfigurationInserts, ISoapProxyClientInserts, ISoapProxyServiceInserts
    {
        private string pName;
        private string pExpandedName;
        private string pFBlockInitials;

        private Group pPropertyGroup;
        private FlowLayoutPanel pGroupFlowPanel;
        private Button pUpdateButton;
        private CheckBox pShowProperty;


         private string pFBlockName;


         public Property(FBlock aFBlock, string aName, int aIndex)
         {
             pPropertyAttributes = new List<PropertyAttribute>();
             pFBlockName = aFBlock.FBlockName;

             ExpandName();
             GetInitials();

             pShowProperty = new CheckBox(this, 10, (aIndex + 1) * 20, aIndex);
             pPropertyGroup = new Group(this);
             pGroupFlowPanel = new FlowLayoutPanel(this);

             pUpdateButton = new Button(this, 10, 18, aIndex);
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

由于其保护级别,"StubGenerator.PropGenerator.Method"无法访问

它引用FBlock.cs文件中的以下行

private List<Method> pMethods;
Run Code Online (Sandbox Code Playgroud)

由于其保护级别,"StubGenerator.PropGenerator.Method"无法访问

它引用FBlock.cs文件中的以下行

 public Method AddMethod(string aName)
Run Code Online (Sandbox Code Playgroud)

可访问性不一致:返回类型'StubGenerator.PropGenerator.Method'比方法'StubGenerator.PropGenerator.FBlock.AddMethod(string)'更难访问

它引用FBlock.cs文件中的以下行

 public Method AddMethod(string aName)
Run Code Online (Sandbox Code Playgroud)

使类Method公开不解决错误.我无法弄清楚为什么我在调用Property类时没有得到错误.我不明白为什么将Method类设为public并不能解决问题.

有任何想法吗?

编辑问.可能会有一些文件设置导致这个?

And*_*hop 21

首先,尝试完全重建.清理和构建(或仅使用重建).每隔一段时间,我就能解决奇怪的构建问题.

接下来,注释掉您发布的示例中没有的其余代码.编译.那样有用吗?

如果是这样,请开始添加段,直到打破它.

如果没有,请制作所有课程并重public试.

如果仍然失败,可以尝试将修剪后的类放在同一个文件中并重建.那时,绝对没有理由存在访问问题.如果仍然失败,请从事木工.

  • 令我惊讶的是,这(重建)对我有用.我想我已经停止期待增量构建搞砸了:( (2认同)

sco*_*ott 7

有一个项目使用链接文件.我需要将method.cs文件作为链接文件添加到该项目中,因为FBlock.cs文件就在那里.我以前从未听说过链接文件,我甚至都不知道这是可能的.

  • 是的,在Visual Studio中隐藏了添加链接文件的选项.如果有人搜索它,它在添加现有文件对话框中,添加按钮有一个小箭头将文件添加为链接而不是复制它. (4认同)