Как перебрать в цикле все переменные класса и присвоить им значения C#

08:02:2013 Рі.

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

Для примера, рассмотрим функцию, которая будет очищать значения всех переменных типа string внутри определенного класса. Используя этот механизм с переменными дальше можно делать все, что угодно.

internal void Clear()
{
   Type curType = typeof (MyClass);

   FieldInfo[] properties = curType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

    foreach (FieldInfo property in properties)
    {
         if (property.FieldType == typeof(string))
         {
              try
              {
                  property.SetValue(this, string.Empty);
              }
              catch (Exception exception)
              {
                 //Обрабатываем исключительную ситуацию, пишем логи
              }
         }
   }

С помощью параметров BindingFlags можно выбрать, какие переменные будут выбраны в масив FieldInfo. В данном случае подразумевается, что все выбираемые переменные типа string имеют спецификатор доступа private.

 

Добавить комментарий



Обновить

« Замена выделенного текста в TextBox C# Windows Forms   Как сериализировать статический класс с XmlSerializer - Singleton »
← Раньше

Фотоальбом

fotic.jpg

Облако Тегов