Использовать строку в качестве публичного имени строки? - PullRequest
0 голосов
/ 12 марта 2011

У меня есть файл: 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 ]

2 голосов
/ 12 марта 2011

Я думаю, вы могли бы использовать отражение, чтобы сделать это.

String mystring = "pspeed";
PropertyInfo pi = typeof(dvar).GetProperty(mystring);
pi.SetValue(dvar, 1, new Object[0]);
1 голос
/ 12 марта 2011

Вы не можете сделать это, однако вы можете обернуть словарь с помощью индексатора:

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;
0 голосов
/ 12 марта 2011

Вы можете просто использовать метод Int32.Prase () или (TryParse (), если вам нужно его проверить).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...