2014-02-06 3 views
0

У меня есть класс, который содержит только несколько общедоступных константных строк. Как разработчик, я хочу, чтобы на них каждый раз ссылался максимум на мой проект. Есть ли способ разместить атрибут на consts или какой-либо другой механизм, чтобы заставить компилятор генерировать ошибку, если найдено более одной ссылки на каждую константу?Ограничить ссылки на общедоступные поля в проекте

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

+3

Зачем вам нужны публичные поля const, если вы собираетесь ссылаться на них только один раз? почему бы не использовать постоянные значения в вашем коде. – Habib

+0

Я хочу, чтобы все константы в одном классе поддерживались. Я очень хочу избегать «жестко закодированных» строк во многих классах и предпочитаю не иметь частных consts во многих классах. –

+0

Какова цель констант? Будет ли ваша потребность лучше обслуживаться с настройками конфигурации? –

ответ

1

Единственное решение, которое я имею в виду, чтобы реализовать эту плохой шаблон, чтобы сохранить логику частных полей константных и хранить их в одном файле, содержащем partial classes объявления для каждого соответствующего класса.

Пример:

public partial class MyClass1 
{ 
    private const string myClass1Const1 = "myClass1Const1"; 
    private const string myClass1Const2 = "myClass1Const2"; 
} 

public partial class MyClass2 
{ 
    private const string myClass2Const1 = "myClass2Const1"; 
    private const string myClass2Const2 = "myClass2Const2"; 
} 
0

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

Могут быть другие способы выполнения поведения одного исходного файла для констант, и их можно использовать только один раз, но здесь есть один вариант. Хотя, я бы не рекомендовал его; используйте его, если нужно.

public static class Consts 
{ 
    private const string _name = "Foo"; 
    private static int _nameCount = 0; 

    public static string Name 
    { 
     get 
     { 
      if(_nameCount++ > 1) 
      { 
       throw new Exception("Cannot use Name more than once."); 
      } 
      return _name; 
     } 
    } 
} 
Смежные вопросы