¿Puedo establecer una propiedad privada a través de la reflexión?
public abstract class Entity
{
private int _id;
private DateTime? _createdOn;
public virtual T Id
{
get { return _id; }
private set { ChangePropertyAndNotify(ref _id, value, x => Id); }
}
public virtual DateTime? CreatedOn
{
get { return _createdOn; }
private set { ChangePropertyAndNotify(ref _createdOn, value, x => CreatedOn); }
}
}
He intentado lo siguiente y no funciona, donde t
representa un tipo de Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Creo que puedo hacer esto, pero no puedo resolverlo.
.net
reflection
properties
private
AwkwardCoder
fuente
fuente
Respuestas:
EDITAR: Dado que la propiedad en sí es pública, aparentemente no necesita usarla
BindingFlags.NonPublic
para encontrarla. Llamar aSetValue
pesar de que el setter tiene menos accesibilidad sigue haciendo lo que espera.fuente
Sí lo es:
fuente
Puede acceder al setter privado desde el tipo derivado a través del código
fuente
Ninguno de estos funcionó para mí, y el nombre de mi propiedad era único, así que solo usé esto:
fuente
fuente