Чтение реестра с установленными и полученными свойствами - PullRequest
0 голосов
/ 19 апреля 2011

Я не уверен, что я делаю здесь неправильно. У меня есть класс, созданный для получения некоторых значений ключей reg, и я продолжаю получать ошибки приведения типов. Я передаю имя ключа. Значение ключа является int. Который также должен быть возвращаемым значением.

Я продолжаю получать эту ошибку

Невозможно неявно преобразовать тип 'string' в int

в следующих местах:

rValue = (string)myKey.GetValue("DebugLog");
&set { DebugLog = getDebugLog(value);}

обратите внимание на это в c #

private int DebugLog;

private int getDebugLog(String name)
{
    int rValue;
    myKey = Registry.LocalMachine.OpenSubKey(regKey + name, false);
    rValue = (string)myKey.GetValue("DebugLog");
    return rValue;
}

public int debugLog
{
    get { return DebugLog; }
    set { DebugLog = getDebugLog(value);}
}

Ответы [ 4 ]

7 голосов
/ 19 апреля 2011

Реестр здесь не имеет значения - вы приводите значение к string, а затем пытаетесь присвоить это выражение переменной int. Это так:

object x = "hello";
int y = (string) x;

Это никогда не сработает. Если вы хотите преобразовать строку в целое число, вам нужно проанализировать ее, например, с int.Parse или int.TryParse.

Если значение в реестре на самом деле целое число, просто приведите его к этому.

2 голосов
/ 19 апреля 2011
rValue = Convert.ToInt32(myKey.GetValue("DebugLog"));
0 голосов
/ 19 апреля 2011

Что такое "DebugLog"?Значение уже установлено?

private int getDebugLog(String name)
{
  int rValue;
  myKey = Registry.LocalMachine.OpenSubKey(regKey + name, false);
  object o = myKey.GetValue("DebugLog");
  if (o != null) {
    rValue = o.ToString();
    if (!String.IsNullOrEmpty(rValue)) {
      return Convert.ToInt32(Convert.ToDecimal(rValue));
    }
  }
  return null;
}
0 голосов
/ 19 апреля 2011

Вы объявляете rValue как int, но устанавливаете его как строку.Попробуйте это:

rvalue = Int32.Parse((string)myKey.GetValue("DebugLog"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...