Kann ich durch Reflexion ein Privateigentum festlegen?
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); }
}
}
Ich habe folgendes versucht und es funktioniert nicht, wobei t
eine Art von darstellt Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Ich denke, ich kann das tun, aber ich kann es nicht herausfinden.
.net
reflection
properties
private
AwkwardCoder
quelle
quelle
Antworten:
BEARBEITEN: Da die Eigenschaft selbst öffentlich ist, müssen Sie sie anscheinend nicht verwenden
BindingFlags.NonPublic
, um sie zu finden. Das Anrufen,SetValue
obwohl der Setter weniger zugänglich ist, macht immer noch das, was Sie erwarten.quelle
Ja, so ist es:
quelle
Sie können vom abgeleiteten Typ über Code auf den privaten Setter zugreifen
quelle
Keines davon hat für mich funktioniert, und mein Eigenschaftsname war eindeutig, also habe ich nur Folgendes verwendet:
quelle
quelle