奇怪的是,我有两个枚举集:
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
};
}
答案 0 :(得分:1)
ComponentActionTypes.Add
具有值== 0. action.ComponentActionType
来自代码示例的值== 184.只要枚举变量允许存储值,这些值不在枚举定义中,您就有这样的值结果。
您需要检查,为什么action.ComponentActionType
等于184。
答案 1 :(得分:0)
尝试
Enum.GetName(typeof(ComponentActionTypes), action.ComponentAction);
不确定“184”通过。
答案 2 :(得分:0)
您可以查看ComponentActionType字段的填充方式吗?枚举值可以包含除列出的其他值。例如:这是完全有效的:
enum foo {A = 1,B = 2,C = 3};
var b = (foo)7;
(如果默认情况下不允许,则无法使用枚举进行屏蔽)。在这种情况下,b的字符串表示形式为7,因为它无法与枚举中的项匹配。