Dapatkah saya menetapkan properti pribadi melalui refleksi?
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); }
}
}
Saya sudah mencoba yang berikut ini dan tidak berhasil, di mana t
mewakili jenis dari Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Saya kira saya bisa melakukan ini tetapi saya tidak bisa menyelesaikannya.
.net
reflection
properties
private
AwkwardCoder
sumber
sumber
Jawaban:
EDIT: Karena properti itu sendiri bersifat publik, Anda tampaknya tidak perlu menggunakan
BindingFlags.NonPublic
untuk menemukannya. MemanggilSetValue
meskipun penyetel memiliki aksesibilitas yang lebih rendah tetap melakukan apa yang Anda harapkan.sumber
Ya itu:
sumber
Anda dapat mengakses penyetel pribadi dari tipe turunan melalui kode
sumber
Tidak ada yang berhasil untuk saya, dan nama properti saya unik, jadi saya hanya menggunakan ini:
sumber
sumber