C# 数据类型的枚举

发布于 2024-10-02 12:57:09 字数 69 浏览 3 评论 0原文

c# 中是否有包含 c# 数据类型的枚举。这样我就可以在类中定义一个属性,该属性接受用户的数据类型(int,string)。

Is there any enum in c# which holds c# datatypes. So that I can define a property in a class which accepts datatype (int,string) from the user.

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

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

发布评论

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

评论(6

独守阴晴ぅ圆缺 2024-10-09 12:57:09

TypeCode 枚举系统。看起来它涵盖了所有基本类型。

您可以使用 Type.GetTypeCode() 获取任何对象的 TypeCode:

TypeCode typeCode = Type.GetTypeCode(anObject.GetType());

There is the TypeCode Enumeration in System. Looks like it covers all of the base types.

You can get the TypeCode for any object using Type.GetTypeCode():

TypeCode typeCode = Type.GetTypeCode(anObject.GetType());
妖妓 2024-10-09 12:57:09

您只想将枚举值与字符串关联吗?您可能想要使用 Description 属性。

public enum MyEnum
{
    [Description("My first value.")]
    FirstValue,
    [Description("My second value.")]
    SecondValue,
    [Description("My third value.")]
    ThirdValue
}

private string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());
    DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
    if (attributes.Length > 0)
    {
        return attributes[0].Description;
    }
    else
    {
        return value.ToString();
    }
}

定义映射的另一种可能性是使用Dictionary

Do you simply want to associate an enum value with a string? You might want to use the Description attribute.

public enum MyEnum
{
    [Description("My first value.")]
    FirstValue,
    [Description("My second value.")]
    SecondValue,
    [Description("My third value.")]
    ThirdValue
}

private string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());
    DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
    if (attributes.Length > 0)
    {
        return attributes[0].Description;
    }
    else
    {
        return value.ToString();
    }
}

Another possibility for defining a mapping would be to use a Dictionary<int, string>.

落墨 2024-10-09 12:57:09

Type-type 有一个布尔属性“IsPrimitive”希望这对您有帮助。

There is a boolean property of Type-type "IsPrimitive" hope this helps you.

童话 2024-10-09 12:57:09

根据您的编辑,听起来您需要 泛型但我仍然质疑为什么属性可以是 int 或 string。这些确实是非常不同的事情,只能导致向上转型。

Based on your edit sounds like you need generics but I still question why a property would acceptably be an int or a string. Those are really very different things which can only lead to upcasting.

晨曦÷微暖 2024-10-09 12:57:09

BCL 中没有类似的东西。

为什么需要它?

There is nothing like that in the BCL.

Why do you need it?

心清如水 2024-10-09 12:57:09

你为什么需要那个?该属性已经是它可以接受的数据类型的“过滤器”。

看一下:

在 C# 中重载属性

Why do you need that? The property is already a "filter" to what kind of data it can accept.

Have a look at :

Overloading properties in C#

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