Ответ 1
Был проект, который использовал связанные файлы. Мне нужно было добавить файл method.cs в этот проект как связанный файл, так как там был файл FBlock.cs. Раньше я никогда не слышал о связанных файлах, я даже не знал, что это возможно.
У меня есть три класса. все они являются частью одного и того же пространства имен. вот основы трех классов.
//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)
создание класса Метод public не разрешает ошибки. Я не могу понять, почему я не получаю ошибки при вызове класса Property. И я не понимаю, почему создание класса метода public не устраняет проблему.
Любые идеи?
Отредактировано, чтобы спросить. может ли быть какая-то настройка в файле, которая вызывает это?
Был проект, который использовал связанные файлы. Мне нужно было добавить файл method.cs в этот проект как связанный файл, так как там был файл FBlock.cs. Раньше я никогда не слышал о связанных файлах, я даже не знал, что это возможно.
Во-первых, попробуйте полностью перестроить. Очистите и создайте (или просто используйте перестроить). Каждый раз в течение долгого времени, что решает странные проблемы сборки для меня.
Далее, закомментируйте остальную часть кода, которая отсутствует в вашем примере, который вы опубликовали. Компиляция. Это работает?
Если это так, начните добавлять сегменты до тех пор, пока не сломаете их.
Если нет, сделайте все классы public
и повторите попытку.
Если это все еще не удается, возможно, попробуйте поместить урезанные классы в один файл и перестроить. В этот момент нет абсолютно никаких оснований для вопросов доступа. Если это все еще не удается, возьмите плотницкие работы.
Попробуйте добавить нижеприведенный код к классу, который вы хотите использовать
[Serializable()]
public partial class Class
{
Код, который вы отправили, не приводит к указанным вами сообщениям об ошибках. Вы должны предоставить (маленький) пример, который фактически показывает проблему.
По умолчанию все ваши классы internal
Маркировка public
не выполняла трюк.
Уверены ли вы, что у вас нет двух классов с именем "Метод" и, возможно, включают неправильный класс метода?
Также может быть, что библиотека, содержащая класс, о котором идет речь, неправильно подписана с сильным именем.
Я предполагаю, что public Method AddMethod(string aName)
определяется в общедоступном интерфейсе, который реализует FBlock. Потребители этого интерфейса не гарантируют доступ к методу.
Привет Вам нужно изменить свойства Button от частного к публичному. Вы можете изменить Под кнопкой → свойства → Дизайн → Модификаторы → "public" После изменения ошибка защиты исчезнет.
Буди