Представьте, что у меня есть структура классов, подобная этой:
public interface IArbitraryQualifier {
int Qualification { get; }
}
public class ArbitraryQualifier : IArbitraryQualifier {
public const int MIN_QUALITY = 1;
public int Qualification { get; }
}
public class Person {
public IArbitraryQualifier ArbitraryQualifier { get; }
public bool AmIARealBoy
{
get
{
return this.ArbitraryQualifier.Qualification >= ArbitraryQualifier.MIN_QUALITY;
}
}
}
Как мне ссылаться на постоянное поле MIN_QUALITY
в классе ArbitraryQualifier
из класса Person
? Он продолжает генерировать ошибку IDE0009 («... не содержит определения для ...»), которая предлагает мне «добавить квалификацию« this »или« me »».
Если я переименую свойство или конкретный класс, он будет работать нормально, но я не хочу (я использую шаблонный класс, названный так же, как свойство).
Обратите внимание, что это также происходит для абстрактных классов и универсальных типов, но не для конкретных типов. Например, здесь нет ошибки компиляции:
public class ArbitraryQualifier {
public const int MIN_QUALITY = 1;
public int Qualification { get; }
}
public class Person {
public ArbitraryQualifier ArbitraryQualifier { get; }
public bool AmIARealBoy
{
get
{
return this.ArbitraryQualifier.Qualification >= ArbitraryQualifier.MIN_QUALITY;
}
}
}
Кроме того, почему это компилируется, когда другие нет?