Переход от const к свойству и статическому контексту (C #) - PullRequest
0 голосов
/ 18 февраля 2011

У меня был такой класс:

public class ClassN
{
    public const int SomeInt = 16;
    ...
}

Это было вызвано откуда-то, используя

int myInt = ClassN.SomeInt

Теперь я должен изменить 16 на что-то более динамичное, и это выглядит так:

public int SomeInt
{
    get
    {
         //this method is not static and cant be changed to static 
         return GetIntDynamically();    
    }
}

Конечно, звонок больше не работает из-за статического контекста. Я не могу создать новый экземпляр ClassN ... какой еще вариант, который не нарушает правила кодирования?

Спасибо

Ответы [ 3 ]

0 голосов
/ 18 февраля 2011

Если вы не можете создать новый экземпляр ClassN, но ваш метод зависит от некоторого состояния экземпляра с помощью ключевого слова this, то вам необходимо вызвать метод для определенного известного экземпляра ClassN.Если это единственное, то вы могли бы рассмотреть возможность реализации одноэлементного шаблона.Если это не единственный такой экземпляр, вам нужно будет сделать ссылку на правильный экземпляр доступным для вашего вызывающего кода.Поэтому, как я уже сказал в своем комментарии, нам нужно больше понимать вашу ситуацию, чтобы ответить на этот вопрос полностью.Тем не менее, шаблон singleton может быть тем, что вам нужно ...

0 голосов
/ 22 февраля 2011

Это то, что вы ищете?

public class ClassN 
{
    public static int SomeInt = 16;     
    ...
} 
0 голосов
/ 18 февраля 2011

Если GetIntDynamically не является статическим и не может быть статическим, у вас нет другого варианта создания экземпляра ClassN.

...