关于在 C# 中将运算符作为 ENUM 中的值的问题

发布于 2024-10-11 16:32:44 字数 364 浏览 2 评论 0原文

我有一个配置 XML 文件。一些节点用于计算目的,我计划撕毁如下所示的值,

<OPERATION>&GT;=</OPERATION> <!-- GREATER THAN OR EQUAL --> <VALUE>1</VALUE>
<OPERATION>&LT;=</OPERATION> <!-- LESSER THAN OR EQUAL --> <VALUE>1</VALUE>

我在我的 C# 类中使用此 XML。我想知道我是否可以为这些运算符提供 ENUM? 这可能吗?

干杯, 卡蒂克

I have a configuration XML file. some nodes are used for computation purpose and I plan to tore the values like below

<OPERATION>>=</OPERATION> <!-- GREATER THAN OR EQUAL --> <VALUE>1</VALUE>
<OPERATION><=</OPERATION> <!-- LESSER THAN OR EQUAL --> <VALUE>1</VALUE>

I use this XML in my C# class. I was wondering if i can have an ENUM for these operators?
Is this possible?

Cheers,
Karthik

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

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

发布评论

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

评论(1

柠北森屋 2024-10-18 16:32:44

假设您正在使用 XML 序列化,您可以尝试使用 XmlEnum 属性:

public enum Operation
{
    [XmlEnum(">")]
    GreaterThan,
    [XmlEnum("<")]
    LessThan,
    ...
}

我不确定它对这些特定字符的反应,但... < em>(我刚刚尝试过,效果很好)


编辑

如果您使用 Linq to XML,则可以通过从查询中调用方法将字符解码为枚举值:

Operation DecodeOperation(string s)
{
    switch(s)
    {
        case ">":
            return Operation.GreaterThan;
        case "<":
            return Operation.LessThan;
        ...
        default:
            return Operation.Unknown; // or throw exception...
    }
}

Assuming you're using XML serialization, you can try to use the XmlEnum attribute:

public enum Operation
{
    [XmlEnum(">")]
    GreaterThan,
    [XmlEnum("<")]
    LessThan,
    ...
}

I'm not sure how it will behave with these specific characters, though... (I just tried, it works fine)


EDIT

If you're using Linq to XML, you can just decode the character into an enum value by calling a method from within your query:

Operation DecodeOperation(string s)
{
    switch(s)
    {
        case ">":
            return Operation.GreaterThan;
        case "<":
            return Operation.LessThan;
        ...
        default:
            return Operation.Unknown; // or throw exception...
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文