2013-04-10 1 views
1

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

public static class ApplicationType 
{ 
    private static ApplicationEnum application = ApplicationEnum.App1; 
    public static ApplicationEnum Application 
    { 
     get { return application; } 
     set { application = value; } 
    } 

    public enum ApplicationEnum 
    { 
     App1, 
     App2, 
     App3 
    } 
} 

Я хочу, чтобы получить доступ к Application из другого класса, например .. .

public partial class MainWindow : Window 
{ 
    ApplicationType. //<-- Intellisense shows only ApplicationEnum } 

Спасибо.

EDIT: Проблема в том, что я не пытался внутри MainWindow, как в этом примере, как я и думал.

+0

@ CL4PTR4P Ему этого не нужно, поэтому он сделал его «статическим». OP, является 'MainWindow' внутри одного проекта/сборки? – tnw

+0

или если вы хотите получить доступ к типу ApplicationEnum, вы должны сделать его общедоступным –

+5

Ваш класс не будет компилироваться с «непоследовательностью доступности» в качестве ошибки. Вы даже прочитали ошибку компилятора? Это говорит вам, что именно не так. Вы не можете иметь публичное свойство открытого типа, которое возвращает частный тип. – CodesInChaos

ответ

8

Вы находитесь в середине объявления класса. Вы должны объявить поле, метод и т.д. Например, это должно быть в порядке (если вы сделаете ApplicationEnum общественности):

private ApplicationEnum foo = ApplicatoinType.Application; 

Пока вы не сделали ApplicationEnum общественность, вы обнаружите, что ваше Application свойства не получится для компиляции - вы не можете объявить публичное свойство типа, который сам не является публичным.

+0

У вас есть опечатка в «ApplicationType.Application», Jon. – Brian

+0

Спасибо, я изменил enum для публики, но у меня все еще есть доступ к 'ApplicationType.ApplicationEnum', но не к' Application' – hagensoft

+0

Проблема решена. Я не пытался его использовать в рамках метода (он никогда не был внутри MainWindow, как в моем примере). Arrrggg. : S – hagensoft