общедоступный виртуальный enum (словарь) КАК? - PullRequest
0 голосов
/ 13 ноября 2011

СМ. НИЖЕ РЕШЕНИЯ НА ОСНОВЕ ОТВЕТА / КОММЕНТАРИИ от @Bertrand Le Roy


ОРИГИНАЛЬНЫЙ ВОПРОС:

Не знаете, какчтобы объяснить мою проблему.

У меня есть запись детали в Orchard:

    [Display(Name = "Would you like us to call you to discuss the quote for your case?")]
    public ContactClientList ContactClient
    {
        get { return Record.ContactClient; }
        set { Record.ContactClient = value; }
    }
    public enum ContactClientList
    {
        ContactClient_Yes,
        ContactClient_No
    }
    public class ContactClientDictionary
    {
        public static readonly Dictionary<ContactClientList, string> contactclientDictionary = new Dictionary<ContactClientList, string>
        {
            { ContactClientList.ContactClient_No, "No, please do not contact me by telephone." },
            { ContactClientList.ContactClient_Yes, "Yes, please contact me as soon as possibly by telephone to discuss my Uncontested Divorce quote." },
        };
        static string ConvertContactClient(ContactClientList contactclientlist)
        {
            string name;
            return (contactclientDictionary.TryGetValue(contactclientlist, out name))
                ? name : contactclientlist.ToString();
        }
        static void Main()
        {
            Console.WriteLine(ConvertContactClient(ContactClientList.ContactClient_Yes));
            Console.WriteLine(ConvertContactClient(ContactClientList.ContactClient_No));
        }
    }

Теперь у меня есть запись детали:

public virtual ContactClientList ContactClient { get; set; }

И я получаюошибка:

Сообщение об ошибке компилятора: CS0246: не удалось найти тип или имя пространства имен ContactClientList (отсутствует директива using или ссылка на сборку?)

Есть мысли?


РЕШЕНИЕ:

Я достал

    public enum ContactClientList
    {
        ContactClient_Yes,
        ContactClient_No
    }
    public class ContactClientDictionary
    {
        public static readonly Dictionary<ContactClientList, string> contactclientDictionary = new Dictionary<ContactClientList, string>
        {
            { ContactClientList.ContactClient_No, "No, please do not contact me by telephone." },
            { ContactClientList.ContactClient_Yes, "Yes, please contact me as soon as possibly by telephone to discuss my Uncontested Divorce quote." },
        };
        static string ConvertContactClient(ContactClientList contactclientlist)
        {
            string name;
            return (contactclientDictionary.TryGetValue(contactclientlist, out name))
                ? name : contactclientlist.ToString();
        }
        static void Main()
        {
            Console.WriteLine(ConvertContactClient(ContactClientList.ContactClient_Yes));
            Console.WriteLine(ConvertContactClient(ContactClientList.ContactClient_No));
        }
    }

из

public class ModelNamePart : ContentPart<ModelNamePartRecord 
{
    public ContactClientList ContactClient
    {
        ...
    }
[TOOK OUT FROM HERE]
}

Асделал его собственным классом в конце файла ModelNamePartRecord.cs, но пришлось изменить имя класса (просто добавив «Enum» после) и связать его с ContentPartRecord (в противном случае он выбрасывает ассоциацию NHibernate из ошибки отображения таблицы):

public class ContactClientListEnum : ContentPartRecord
{
    public enum ContactClientList
    {
        ...
    }
    public class ContactClientDictionary
    {
        ...
    }
}

Кроме того, в файле ModelNamePartRecord.cs я только что обновил имя класса:

public class ModelNamePartRecord : ContentPartRecord
{
    public virtual ContactClientListEnum ContactClient { get; set; }
}

СНОВА, замена происходит после этой части выше в своем классе.

Спасибо!

1 Ответ

0 голосов
/ 13 ноября 2011

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

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