Puis-je définir une propriété privée par réflexion?
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); }
}
}
J'ai essayé ce qui suit et cela ne fonctionne pas, où t
représente un type de Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Je suppose que je peux le faire mais je ne peux pas y arriver.
.net
reflection
properties
private
AwkwardCoder
la source
la source
Réponses:
EDIT: Puisque la propriété elle-même est publique, vous n'avez apparemment pas besoin de l'utiliser
BindingFlags.NonPublic
pour la trouver. AppelerSetValue
malgré le fait que le setter ait moins d'accessibilité fait toujours ce que vous attendez.la source
Oui, ça l'est:
la source
Vous pouvez accéder au setter privé à partir du type dérivé via le code
la source
Aucun de ces éléments n'a fonctionné pour moi, et le nom de ma propriété était unique, alors j'ai simplement utilisé ceci:
la source
la source