转换 C# 枚举的更简洁方法

发布于 2024-08-20 05:39:46 字数 517 浏览 7 评论 0原文

我想使用一个对象(由框架返回,不在我的控制范围内),myField,它具有枚举SPNumberFormatTypes类型的属性DisplayFormat

我想将 DisplayFormat 的整数值作为字符串分配给XmlAttribute。这是我目前所做的:

myAttribute.Value = ((Int32)((SPNumberFormatTypes)field.DisplayFormat)).ToString();

实现这一目标的另一种可能的方法是:

myAttribute.Value = ((Int32)Enum.Parse(typeof(SPNumberFormatTypes), field.DisplayFormat.ToString())).ToString();

我想知道是否有一种更简单/更干净的方法来实现这一目标?

I want to use an object (returned by framework, not in my control), myField which has a property DisplayFormat of type enum SPNumberFormatTypes.

I want to assign the integer value of DisplayFormat as a string to an XmlAttribute. Here is what I currently do:

myAttribute.Value = ((Int32)((SPNumberFormatTypes)field.DisplayFormat)).ToString();

One more possible way to achieve this is:

myAttribute.Value = ((Int32)Enum.Parse(typeof(SPNumberFormatTypes), field.DisplayFormat.ToString())).ToString();

I want to know if there is a simpler/cleaner way to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

孤君无依 2024-08-27 05:39:46

是的,将您所拥有的内容重构为扩展方法,例如 ValueToString

public static string ValueToString(this SPNumberFormatTypes format) {
    int value = (int)format;
    return format.ToString();
}

用法:

// format is SPNumberFormatType
Console.WriteLine(format.ValueToString());

此外,enum 的名称应该是单数,因此 SPNumberFormatType 。对于 enum 的每个成员,例如 FooSPNumberFormatType.Foo 是一种格式类型,而不是一种格式类型。这就是为什么它应该是单一的。但是,如果 SPNumberFormatTypes 被标记为 Flags 那么你就可以了,复数是标准的,但你应该将 DisplayFormat 重命名为 DisplayFormats< /代码>。

以下是来自 MSDN 的命名指南

Yes, refactor what you have into an extension method, say, ValueToString:

public static string ValueToString(this SPNumberFormatTypes format) {
    int value = (int)format;
    return format.ToString();
}

Usage:

// format is SPNumberFormatType
Console.WriteLine(format.ValueToString());

Also, the name of your enum should be singular so SPNumberFormatType. For each member of your enum, say Foo, SPNumberFormatType.Foo is a format type, not a format types. This is why it should be singular. If, however, SPNumberFormatTypes is marked as Flags then you're fine, plural is standard but you should rename DisplayFormat to DisplayFormats.

Here are the naming guidelines from MSDN.

甲如呢乙后呢 2024-08-27 05:39:46

@itowlson 的评论是正确的答案。由于枚举已经是 SPNumberFormatTypes 类型,因此无需将其强制转换为该类型。因此,我的目标可以通过这样做以更简单的方式实现:

((Int32)(field.DisplayFormat)).ToString();

谢谢@itowlson!

@itowlson's comment is the correct answer. Since the enum is already of type SPNumberFormatTypes, there is no need to cast it to that type. Thus my objective can be acheived in an easier way by doing this:

((Int32)(field.DisplayFormat)).ToString();

Thanks @itowlson!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文