-1

奇怪的是,我有两个枚举集:

public enum ComponentActionTypes {
    Add = 0,
    Move = 1,
    Delete = 2,
    Edit = 3,
    Enable = 4,
    Disable = 5
}
public enum ComponentNames {
    Component = 0,
    Logo = 1,
    Main_menu = 2,
    Search_box = 3,
    Highlighter = 4,
    RSS = 5,
    Twitter = 6,
    YouTube = 7
}

当我尝试打印以下文本时,

ActionText =
string.Format("{0}ed a {1}", action.ComponentActionType, action.ComponentName);

将产生:

184ed a Logo代替Added a Logo

action.ComponentActionType被转换为数字(ToString没有帮助),也是一个

奇怪184的数字(比如,不是枚举数本身)

知道如何解决这个问题吗?

更新:

namespace BrandToolbar.Common.ActionLog.Model
{
    public class ActionItem
    {
        public Guid UserId { get; set; }
        public Int64 PublicId { get; set; }
        public ComponentActionTypes ComponentActionType { get; set; }
        public DateTime Date { get; set; }
        public ComponentNames ComponentName { get; set; }
        public string UiJsonPreview { get; set; }
    }
}


public static ActionItemUI ConvertModelToUiObj(ActionItem action)
{
    return new ActionItemUI()
    {
        ActionText = string.Format(
            "{0}ed a {1}",
            action.ComponentActionType,
            action.ComponentName
        ).Replace("_", " "),
        TooltipText = string.Format(
            "{0}ed on {1}",
            action.ComponentActionType,
            action.Date.ToString(StringFormatter.DateFormat)
        ),
        ImageUrl = string.Empty,
        ConponentText = string.Empty
    };
}
4

3 回答 3

1

ComponentActionTypes.Add具有值 == 0。action.ComponentActionType来自代码示例具有值 == 184。就枚举变量允许存储不在枚举定义中的值而言,您已经得到了这样的结果。

你需要检查一下,为什么action.ComponentActionType等于184。

于 2012-06-04T09:37:33.797 回答
0

你能检查一下 ComponentActionType 字段是如何填充的吗?枚举值可以包含未列出的其他值。例如:这是完全有效的:

    enum foo {A = 1,B = 2,C = 3};
    var b = (foo)7;

(如果默认情况下不允许,则无法使用枚举进行屏蔽)。在这种情况下,b 的字符串表示为 7,因为它无法与枚举中的项目匹配。

于 2012-06-04T09:36:27.197 回答
0

尝试

Enum.GetName(typeof(ComponentActionTypes), action.ComponentAction);

不确定“184”通过。

于 2012-06-04T09:33:54.423 回答