Yansıma yoluyla özel bir mülk belirleyebilir miyim?
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); }
}
}
Aşağıdakileri denedim ve çalışmıyor, burada t
bir tür temsil ediyor Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
Sanırım bunu yapabilirim ama çözemiyorum.
2
Geç olduğunu biliyorum ama bu düşünceye 'neden'imi paylaşacağım diye bir ihtiyaç buldum. Bazı üçüncü taraf yazılımlardaki bir rahatsızlığın üstesinden gelmem gerekiyordu. Özellikle, Crystal Reports ExportToStream yöntemini kullanıyordum. Bu yöntemin yazılma şekli, akışın dahili tamponuna erişime izin verilmedi. Raporu tarayıcıya göndermek için, akışı yeni bir arabelleğe (100K +) kopyalayıp sonra göndermem gerekiyordu. Akış nesnesindeki özel '_exposable' alanını 'true' olarak ayarlayarak, dahili arabelleği doğrudan gönderebildim ve her istekte 100K'dan fazla ayırma kaydedebildim.
—
Ray
Neden? Tüm etki alanı nesnenizdeki Id özelliklerinizde özel ayarlayıcılarınız olduğunu ve depo testleri uygulamak istediğinizi varsayalım. Daha sonra, yalnızca arşiv testi projenizde Id özelliğini ayarlayabilmek isteyeceksiniz.
—
bounav
Başka bir kullanım senaryosu: verileri içe aktarırken "oluşturma tarihi" gibi otomatik olarak oluşturulan alanların ayarlanması.
—
ANeves
Başka bir neden, mümkün olup olmadığını merak ediyorum. Bu soruyu böyle görmeye başladım.
—
Caleb Mauer