使用string作为公共字符串名称?

时间:2011-03-11 22:04:13

标签: c# string class static public

我有文件:dvars.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GSM
{
    public static class dvar
    {
            static int _pspeed = 2;

            public static int pspeed
            {
                get
                {
                    return _pspeed;
                }
                set
                {
                    _pspeed = value;
                }
            }
    }

}

我希望能够使用字符串来定义它(例如,在另一个文件中我想使用字符串作为变量名来设置dvar.pspeed):

string mystring = "pspeed";
dvar.mystring = 1;

有人知道我该怎么做吗?

3 个答案:

答案 0 :(得分:2)

我认为你可以使用反射来做到这一点。

String mystring = "pspeed";
PropertyInfo pi = typeof(dvar).GetProperty(mystring);
pi.SetValue(dvar, 1, new Object[0]);

答案 1 :(得分:1)

你不能这样做,但你可以使用索引器包装字典:

public static class Dvar 
{
    private static IDictionary<string, int> map = new Dictionary<string, int>();

    public static int this[string key]
    {
        get { return map[key]; }
        set { map[key] = value; }
    }
}

并像这样使用它:

Dvar["pspeed"] = 1;

答案 2 :(得分:0)

如果需要验证,可以使用Int32.Parse()方法或(TryParse())。