Могу ли я установить частное свойство через отражение?
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); }
}
}
Я пробовал следующее, и это не работает, где t
представляет собой тип Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Думаю, я могу это сделать, но не могу.
.net
reflection
properties
private
AwkwardCoder
источник
источник
Ответы:
РЕДАКТИРОВАТЬ: поскольку само свойство является общедоступным, вам, по-видимому, не нужно использовать его
BindingFlags.NonPublic
для его поиска. Вызов,SetValue
несмотря на то, что сеттер имеет меньшую доступность, все равно делает то, что вы ожидаете.источник
Да, это так:
источник
Вы можете получить доступ к частному сеттеру из производного типа через код
источник
Ни один из них не работал у меня, и мое имя свойства было уникальным, поэтому я просто использовал это:
источник
источник