Установка свойств с отражением на статических классах - PullRequest
21 голосов
/ 11 августа 2010

Я хочу создать статический класс, который бы загружал некоторые настройки из файла XML и применял эти настройки к своим собственным свойствам.

Я пытаюсь использовать следующий код, но я не знаю, что дать методу SetValue, поскольку класс, для которого мы хотим установить свойство, является статическим.

// some code removed ...
Type settingsType = typeof(Settings);   // Settings is a static class

foreach (PropertyInfo propertyInformation in settingsType.GetProperties(BindingFlags.Public |
                                  BindingFlags.Static))
{
        //------------------------------------------------------------
        //  Determine if configured setting matches current setting based on name
        //------------------------------------------------------------
        if (propertyInformation.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
        {
        //------------------------------------------------------------
        //  Attempt to apply configured setting
        //------------------------------------------------------------
        try
        {
        if (propertyInformation.CanWrite)
        {
        propertyInformation.SetValue(this, Convert.ChangeType(value, propertyInformation.PropertyType, CultureInfo.CurrentCulture), null);
        }
        }
        catch
        {
        }
            break;
        }

}

Можно ли даже задать свойства для статических классов с отражением?

1 Ответ

34 голосов
/ 11 августа 2010

Просто передайте null для экземпляра.

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