C# Acessar o campo de apoio de uma propriedade privada usando Unsafe Accessor
Use UnsafeAccessorAttribute no .NET 8 para acessar os campos de apoio autogerados de propriedades automáticas privadas em C# sem reflexão.
Um recurso pouco conhecido do UnsafeAccessorAttribute é que ele também permite acessar os campos de apoio autogerados de propriedades automáticas, campos com nomes impronunciáveis.
A forma de acessá-los é muito parecida com a de acessar campos, com a única diferença sendo o padrão do nome do membro, que se parece com isto:
<MyProperty>k__BackingField
Vamos usar a seguinte classe como exemplo:
class Foo
{
private string InstanceProperty { get; set; } = "instance-property";
}
Abaixo você encontra o unsafe accessor para o campo de apoio dessa propriedade e exemplos de como ler o campo de apoio privado e como modificar seu valor.
[UnsafeAccessor(UnsafeAccessorKind.Field, Name = "<InstanceProperty>k__BackingField")]
extern static ref string InstancePropertyBackingField(Foo @this);
var instance = new Foo();
// Read
_ = InstancePropertyBackingField(instance);
// Modify
InstancePropertyBackingField(instance) = Guid.NewGuid().ToString();
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.