Как перебрать System.Windows.SystemParameters? - PullRequest
2 голосов
/ 11 февраля 2010

Как я могу перебрать System.Windows.SystemParameters и вывести все ключи и значения?

Я нашел Каков лучший способ перебора словаря в C #? , но не знаете, как адаптировать код для SystemParameters.

Возможно, вы могли бы также объяснить, как я мог понять это сам; возможно используя Reflector .

Ответы [ 4 ]

4 голосов
/ 11 февраля 2010

К сожалению, SystemParameters не реализует какой-либо интерфейс Enumerable, поэтому ни одна из стандартных идиом кодирования итераций в C # не будет работать так же.

Однако вы можете использовать Reflection чтобы получить все открытые статические свойства класса:

var props = typeof(SystemParameters)
    .GetProperties(BindingFlags.Public | BindingFlags.Static);

Затем можно выполнить итерацию по props.

.
3 голосов
/ 11 февраля 2010

используя отражение, вы можете создать словарь, проверив все свойства

var result = new Dictionary<string, object>();
var type = typeof (System.Windows.SystemParameters);
var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Static);

foreach(var property in properties)
{
    result.Add(property.Name, property.GetValue(null, null));
}

foreach(var pair in result)
{
    Console.WriteLine("{0} : {1}", pair.Key, pair.Value);
}

Это даст следующий вывод ...

FocusBorderWidth: 1
FocusBorderHeight: 1
Высокий контраст: Ложь
FocusBorderWidthKey: FocusBorderWidth
FocusBorderHeightKey: FocusBorderHeight
HighContrastKey: HighContrast
DropShadow: True
FlatMenu: True
Рабочая область: 0,0,1681,1021
DropShadowKey: DropShadow
FlatMenuKey: FlatMenu

1 голос
/ 11 февраля 2010

Может быть лучший способ перебрать отраженный набор свойств, используя Type.GetProperties

0 голосов
/ 11 февраля 2010

Словарь содержит KeyValuePair, поэтому что-то вроде этого должно работать

foreach (KeyValuePair kvp in System.Windows.SystemParameters)
{
  var myvalue = kvp.value;
}

Сказав, что в справке по msdn ничего не говорится о том, что System.Windows.SystemParameters является словарем

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