2011-11-12 12 views
0

public virtual enum(Dictionary)HOW?


@BertrandリロイからANSWER/COMMENTをベースとしたソリューションは、以下を参照してください元の質問:私の問題を説明するのか

わかりません。私はパートを録音してい、今

[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; } 

そして、私はエラーが取得しています:

Compiler Error Message: CS0246: The type or namespace name 'ContactClientList' could not be found (are you missing a using directive or an assembly reference?)

任意の考えを?


SOLUTION:

私は

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

から

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)); 
     } 
    } 

を取り出し、ModelNamePartRecord.csファイルの最後にそれ自身のクラス作ったが、クラス名を変更する必要がありました(単純に "Enum"を後で追加しました)。交換、

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

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

はまた、ModelNamePartRecord.csファイルで、私はクラス名を更新:ContentPartRecord(それ以外の場合は、テーブルマッピングされていないエラーからNHibernateの関連付けをスロー)とそれそれ自身のクラスで上記の部分の後に発生します。

ありがとうございます!

+0

最初のスニペットのコンテンツは1つのファイルから来ますか?そうでない場合は、部品がどこに来るか(どのファイル、どの名前空間)に投稿を更新できますか? – nemesv

+0

2つの別々のファイル:Part.csとRecordPart.cs。両方のファイルは同じフォルダ(/ Models)と名前空間にあります。つまり、名前空間ModuleNamespace.Models {} 'になります。 –

答えて

0

異なるモジュールにある場合は、レコードがあるモジュールのプロジェクトに、列挙型が定義されているものへの参照が必要です。それがすでに当てはまっている場合、おそらくcsファイルの上にusingステートメントがありません。

+0

同じモジュールのModels Folderの下にあります。それは同じModule.Models名前空間の下にあります。 –

+0

ああ、あなたが発行したコードは正しくありません。つまり、enumとクラス定義と同じレベルのプロパティ定義があります。 –

+0

回答としてマークする。あなたのコメントは正しい方向に私を導いた。この問題を解決する方法については、「解決方法」セクションの元の質問を確認してください。 –