Я не уверен, что происходит. У меня есть следующий базовый класс:Свойство C# недоступно в производном классе
public class MyRow : IStringIndexable, System.Collections.IEnumerable,
ICollection<KeyValuePair<string, string>>,
IEnumerable<KeyValuePair<string, string>>,
IDictionary<string, string>
{
ICollection<string> IDictionary<string, string>.Keys { }
}
И тогда я это производный класс:
public class MySubRow : MyRow, IXmlSerializable, ICloneable,
IComparable, IEquatable<MySubRow>
{
public bool Equals(MySubRow other)
{
// "MyRow does not contain a definition for 'Keys'"
foreach (string key in base.Keys) { }
}
}
Почему я получаю эту ошибку? «MyNamespace.MyRow» не содержит определения для «Ключей». Оба класса находятся в пространстве имен MyNamespace
. Я попытался получить доступ к this.Keys
и base.Keys
и не работает с MySubRow
. Я пробовал маркировать свойство Keys
как public
в MyRow
, но получил «Модификатор« public »недопустим для этого элемента», я думаю, потому что необходимо реализовать интерфейс.
ОП обращается к члену, не пытается реализовать это – JaredPar
@ Джаред: Посмотрите на свой первый класс. Свойство реализовано там, и это делается так явно. –
@Adam, gotcha, пропустил явную реализацию – JaredPar