Posso definir uma propriedade privada por reflexão?
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); }
}
}
Eu tentei o seguinte e não funciona, onde t
representa um tipo de Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Acho que posso fazer isso, mas não consigo resolver.
.net
reflection
properties
private
AwkwardCoder
fonte
fonte
Respostas:
EDIT: Como a propriedade em si é pública, você aparentemente não precisa usá
BindingFlags.NonPublic
-la para encontrá-la. Ligar,SetValue
apesar de o setter ter menos acessibilidade, ainda faz o que você espera.fonte
Sim, ele é:
fonte
Você pode acessar o setter privado do tipo derivado via código
fonte
Nada disso funcionou para mim, e o nome da minha propriedade era único, então eu apenas usei isso:
fonte
fonte