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 回答