Как мне реализовать это общедоступное перечисление - PullRequest
4 голосов
/ 19 марта 2010

Я пытаюсь получить доступ к личному перечислению моего класса. Но я не понимаю разницы, необходимой для того, чтобы это работало по сравнению с другими участниками;

Если это работает:

private double dblDbl = 2;

//misc code

public double getDblDbl{ get{ return dblDbl; } }

Почему я не могу сделать это с помощью enum?

private enum myEnum{ Alpha, Beta};

//misc code

public Enum getMyEnum{ get{ return myEnum; } }
//throws "Window1.myEnum" is a "type" but is used like a variable

Ответы [ 3 ]

5 голосов
/ 19 марта 2010

У вас здесь происходят 2 совершенно разные вещи.

В первом примере вы определяете приватное поле открытого типа. Затем вы возвращаете экземпляр этого уже открытого типа через открытый метод. Это работает, потому что сам тип уже общедоступен.

Во втором примере вы определяете закрытый тип, а затем возвращаете экземпляр через открытое свойство. Сам тип является частным и, следовательно, не может быть представлен публично.

Более эквивалентным примером для второго случая будет следующий

public enum MyEnum { Alpha, Beta }
// ... 
private MyEnum _value;
public MyEnum GetMyEnum { get { return _value; } }
3 голосов
/ 19 марта 2010

Перечисление должно быть общедоступным, чтобы другие типы могли ссылаться на него - вы хотите сохранить личную ссылку на экземпляр этого перечисления:

public enum myEnum { Alpha, Beta }

public class Foo
{
    private myEnum yourEnum = myEnum.Alpha;
    public myEnum getMyEnum
    { 
        get { return yourEnum; } 
    }
}
0 голосов
/ 19 марта 2010

В первом примере вы объявляете поле типа double, а затем объявляете свойство, которое обращается к нему.Во втором примере вы объявляете перечислимый тип, а затем пытаетесь вернуть тип в свойстве.Вам необходимо объявить перечислимый тип, а затем объявить поле, которое его использует:

public enum MyEnum{ Alpha, Beta};

private MyEnum myEnum = MyEnum.Alpha;

//misc code

public Enum getMyEnum{ get{ return myEnum; } }

Перечислимый тип также необходимо сделать общедоступным, поскольку свойство, которое его использует, является открытым.

...