0

私は次のコードを持っています:

switch(first)
{
    case 'A':
        vm.Content = contentService.Get("0001000", vm.RowKey);
        return View("Article", vm);
    case 'F':
        vm.Content = contentService.Get("0002000", vm.RowKey);
        return View("FavoritesList", vm);
}

「A」は「0001000」のキーを持つ記事のページタイプを指します「F」は「0002000」のキーを持つお気に入りのページタイプを指します

キーを文字列としてコーディングする必要をなくす方法はC#にありますか?キーの省略形または名前でコードを記述し、C#でこれを文字列に変換できるようにする方法はありますか?

これに列挙型を使用できますか?これは理想的なようですが、列挙型を設定する方法がわかりません。

4

3 に答える 3

3

あなたは辞書について考えるかもしれません(私があなたの質問を正しく理解していれば)

//class for holding relation between the code and page name 
public class Data 
{
   public string Code {get;set;}
   public string PageName {get;set;}
}

var dic = new Dictionary<string, Data >{ 
             {"A", new Data{Code="0001000", PageName = "Article"}, 
             {"F", newe Data{Code="0002000", PageName="FavoritesList"}
}

そしてそれを使用した後:

Data dt = null; 
if(dic.TryGetValue(first, out dt)) { // *first* is parameter you use in switch
   vm.Content = contentService.Get(dt.Code, vm.RowKey);
   return View(dt.PageName, vm);
 }
于 2012-09-14T06:37:18.737 に答える
1

列挙型と拡張メソッドを使用して、代替テキスト出力を許可できます。

列挙型:

public enum PageTypes
{
    A,
    F
}

拡張方法(プロジェクトのトップレベルにある必要があります):

public static class Extensions
{
    public static string getText(this PageTypes type)
    {
        switch (type)
        {
            case PageTypes.A:
                return "0001000";
            case PageTypes.F:
                return "0002000";
            default:
                return null;
        }
    }
}

そしてあなたのコード:

PageTypes type;
//assing value to type:
//type = ...
var vm.Content = contentService.Get(type.getText(), vm.RowKey);
switch (type)
{
    case PageTypes.A:              
        return View("Article", vm);
    case PageTypes.F:
        return View("FavoritesList", vm);
}

これで、値を取得するために文字列を使用する必要がなくなりました。

于 2012-09-14T06:36:14.413 に答える
0

私はキーを辞書に入れます、例えば

var keyData = new Dictionary(char,string);
keyData.Add('A',"0001000");

keyData.Add('A',"0001000");
keyData.Add('F',"0002000");

次に、を使用してそれらを参照できます

var value = keyData['A'];
于 2012-09-14T06:38:14.023 に答える