backingField;
do
{
backingField = objectType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance)
.SingleOrDefault(x => x.Name.Contains($"<{propertyName}>"));
if (backingField is not null)
{
break;
}
objectType = objectType.BaseType;
} while (objectType is not null && objectType?.BaseType == typeof(object));
backingField?.SetValue(obj, newValue);
Да, я примерно тоже самое написал сейчас чтобы проверить
Искать через Linq тупо, у бэкинг полей всегда статические имена - .GetField($"<{property.Name}>k__BackingField", BindingFlags.Instance | BindingFlags.NonPublic);
Обсуждают сегодня