-1

我想知道是否可以将字符串解析为 uint 的定义值。类似于http://msdn.microsoft.com/en-us/library/essfb559.aspx的东西。因此,如果我有以下声明:

public const uint COMPONENT1 = START_OF_COMPONENT_RANGE + 1;
public const uint COMPONENT2 = START_OF_COMPONENT_RANGE + 2;
public const uint COMPONENT3 = START_OF_COMPONENT_RANGE + 3;

并通过以下方式定义一个 xml 文件:

<node name="node1" port="12345">
  <component>COMPONENT1</component>
  <component>COMPONENT2</component>
</node>

我希望能够将字符串 COMPONENT1 解析为 COMPONENT1 的 uint 值。这样可以更轻松地概览 xml 文件,而不是数字 5001、5002 fe

我假设定义一个字典或数组可以解决它,但是会留下额外的代码。

4

1 回答 1

1

如果您不需要常量,则可以将enum-type 与它的ToStringParse方法一起使用。

public enum Compontents
{
    COMPONENT1 = 1,
    COMPONENT2 = 2
}

public static class ComponentsHelper
{
    public static Compontents GetComponent(this string compString)
    {
        return (Compontents)Enum.Parse(typeof(Compontents), compString);
    }

    public static uint ToValue(this Compontents comp)
    {
        return (uint)comp;
    }

    public static uint GetComponentValue(this string compString)
    {
        return compString.GetComponent().ToValue();
    }

}

如果你真的需要常量,那么你将不得不写一个大switch语句。

于 2012-05-02T11:25:26.547 回答