-1

奇妙なことに、私には2つの列挙型セットがあります。

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値==0action.ComponentActionTypeを持ちます。コードサンプルから値==184を持ちます。列挙型変数が列挙型定義にない値を格納できる限り、そのような結果が得られます。

action.ComponentActionTypeなぜ184に等しいのかを確認する必要があります。

于 2012-06-04T09:37:33.797 に答える
0

試す

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

「184」まではわかりません。

于 2012-06-04T09:33:54.423 に答える
0

ComponentActionTypeフィールドがどのように入力されているかを確認できますか?列挙値には、リストされている以外の値を含めることができます。例:これは完全に有効です:

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

(デフォルトで許可されていない場合、列挙型でマスキングすることはできません)。この場合のbの文字列表現は7です。これは、列挙内の項目と一致させることができないためです。

于 2012-06-04T09:36:27.197 に答える