Member 13481361 Ответов: 2

Как я могу ссылаться на класс?


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


public class LOCATION_CODE
           {
               public enum CODE
               {
                   AA, AC, AE, AF, AG, AJ, AL, AM, AN, AO, AQ, AR, AS, AT, AU, AV, AY, BA, BB, BC, BD, BE, BF,
                   BG, BH, BL, BM, BN, BO
               }
               public static string DISPLAY_STRING(CODE p)
               {
                   switch (p)
                   {
                       case CODE.AA: return "ARUBA (" + p.ToString() + ")";
                       case CODE.AC: return "ANTIGUA AND BARBUDA (" + p.ToString() + ")";
                       case CODE.AE: return "UNITED ARAB EMIRATES (" + p.ToString() + ")";
                       case CODE.AF: return "AFGHANISTAN (" + p.ToString() + ")";
                       case CODE.AG: return "ALGERIA (" + p.ToString() + ")";
                       case CODE.AJ: return "AZERBIAJAN (" + p.ToString() + ")";
                       case CODE.AL: return "ALBANIA (" + p.ToString() + ")";
                       case CODE.AM: return "ARMENIA (" + p.ToString() + ")";
                       case CODE.AN: return "ANDORRA (" + p.ToString() + ")";
                       case CODE.AO: return "ANGOLA (" + p.ToString() + ")";
                       case CODE.AQ: return "AMERICAN SAMOA (" + p.ToString() + ")";
                       case CODE.AR: return "ARGENTINA (" + p.ToString() + ")";
                       case CODE.AS: return "AUSTRALIA (" + p.ToString() + ")";
                       case CODE.AT: return "ASMORE AND CARTIER (" + p.ToString() + ")";
                       case CODE.AU: return "AUSTRIA (" + p.ToString() + ")";
                       case CODE.AV: return "ANGUILLA (" + p.ToString() + ")";
                       case CODE.AY: return "ANTARTICA (" + p.ToString() + ")";

                   }
                   return null;
               }


Что я уже пробовал:

Я совершил изменения.
Я "использую" пространство имен, но все равно этот класс не появляется в выделении. Буду признателен за любые идеи.

PIEBALDconsult

Не видя больше кода, я действительно не могу помочь с этим, но я рекомендую переработать код.
Что я предпочитаю (и это может быть только я), так это украсить каждый член перечисления атрибутом DescriptionAttribute:

публичный код перечисления
{
[Система.ComponentModel.DescriptionAttribute("Аруба (АА)")]
ЗЕНИТНЫЙ, ...

Затем, во время выполнения, я читаю члены и их описания в словарь<код,строка>

Member 13481361

Мне нравится идея чтения членов в словарь.

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

2 Ответов

Рейтинг:
20

OriginalGriff

Предположим, что LOCATION_CODE находится в том же пространстве имен или что вы использовали правильный using строка, а также ссылка на сборку, если это не то же самое, то этот код будет работать:

LOCATION_CODE lc = new LOCATION_CODE();
Или:
LOCATION_CODE.CODE code = LOCATION_CODE.CODE.AG;
Console.WriteLine(LOCATION_CODE.DISPLAY_STRING(code));

Я бы не стал делать это, как, что хотя: Человекочитаемые строки для элементов перечисления[^] может помочь.


Рейтинг:
1

F-ES Sitecore

// to create an instance of the class
LOCATION_CODE lc = new LOCATION_CODE();

// if you want to use DISPLAY_STRING you don't use an instance
// as it is static so you call it from the type
string code = LOCATION_CODE.DISPLAY_STRING(LOCATION_CODE.CODE.AA);