我有三节课。 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);
}
}
}
我收到以下错误
'StubGenerator.PropGenerator.Method'由于其保护级别而无法访问
引用FBlock.cs文件中的以下行
private List<Method> pMethods;
和
'StubGenerator.PropGenerator.Method'由于其保护级别而无法访问
引用FBlock.cs文件中的以下行
public Method AddMethod(string aName)
和
不一致的可访问性:返回类型'StubGenerator.PropGenerator.Method'比方法'StubGenerator.PropGenerator.FBlock.AddMethod(string)'
更难访问
引用FBlock.cs文件中的以下行
public Method AddMethod(string aName)
使类Method公开不解决错误。我无法弄清楚为什么我在调用Property类时没有得到错误。我不明白为什么将Method类设为public并不能解决问题。
有什么想法吗?
编辑问。可能会在文件上设置一些导致此问题的设置吗?
答案 0 :(得分:21)
首先,尝试完全重建。清理和构建(或仅使用重建)。每隔一段时间,我就会为我解决奇怪的构建问题。
接下来,注释掉您发布的示例中没有的其余代码。编译。那样有用吗?
如果是这样,请开始添加片段,直到有人将其分解为止。
如果没有,请创建所有课程public
并重试。
如果仍然失败,可以尝试将修剪后的类放在同一个文件中并重建。那时,绝对没有理由存在访问问题。如果仍然失败,请从事木工。
答案 1 :(得分:7)
有一个项目使用了链接文件。我需要将method.cs文件作为链接文件添加到该项目中,因为FBlock.cs文件就在那里。我以前从未听说过链接文件,我甚至都不知道这是可能的。
答案 2 :(得分:4)
尝试将以下代码添加到您要使用的类
[Serializable()]
public partial class Class
{
答案 3 :(得分:3)
也可能是包含相关类的库未使用强名称正确签名。
答案 4 :(得分:2)
您发布的代码不会生成您引用的错误消息。您应该提供一个实际表现出问题的(小)示例。
答案 5 :(得分:2)
默认情况下,您的所有课程均为internal
标记public
没有做到这一点。
您确定没有两个名为Method的类,并且可能包含错误的Method类吗?
答案 6 :(得分:0)
我猜测public Method AddMethod(string aName)
是在FBlock实现的公共接口上定义的。该接口的消费者无法保证能够访问Method。
答案 7 :(得分:0)
您好需要将Button属性从private更改为public。 您可以更改Under Button&gt;&gt;属性&gt;&gt;设计&gt;&gt;修饰语&gt;&gt; “上市” 一旦更改,保护错误就会消失。
布迪
答案 8 :(得分:0)
您的课程应该是公开的
公共类FBlock:IDesignRegionInserts,IFormRegionInserts,IAPIRegionInserts,IConfigurationInserts,ISoapProxyClientInserts,ISoapProxyServiceInserts