В заметке рассматривается способ перебора переменных в классе 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.
|