2013-05-04 11 views
8

Statik kurucuya sahip bir sınıfım var.Herhangi bir üye çağırmadan statik yapıcıların çağrılması nasıl sağlanır

Statik kurucunun, herhangi bir üyesini aramadan veya kullanmadan çağırmasını istiyorum, ancak yalnızca yapıcı zaten çağrılmadıysa.

Yansımayı kullanmayı denedim. Yansıma ile statik yapıcıyı (birçok kez) çağırabilirim, ancak daha önce çağrılmış olup olmadığını öğrenemiyorum.

Bunu nasıl yaparım?

DÜZENLEME
Bu yalnızca bahsediyorum ben BİR sınıf, bu daha fazla olabilir değil. Özel bir özellik ile işaretlenmiş tüm sınıfları söyleyelim.

+1

bir bayrak Set (Sizi doğru ... yapmaya çalıştıkları şey anladığını varsayarak) RuntimeHelpers.RunClassConstructor yöntemi kullanabilirsiniz. Statik bir durum ayarlıyorsanız, statik bir kurucu çalıştırmanız gerekir, bu yüzden bu durumu ayarlayın ve kurucunun yeniden çalıştırılması durumunda ayarlanıp ayarlanmadığını görün. –

+0

@Robert: Genel bir çözüm olması gerekiyor. Şimdiden kaç tane sınıf ve hangi sınıfları bilmiyorum. FLAGING, .NET'i kurucuyu çağırdığında bu bayrağı ayarlamayacağından, yardımcı olmayacaktır. –

+0

Şimdi beni merak ettin. Neden herhangi bir üye çağrılmadan önce kurucu * çalıştırmak için gerekli olduğunu düşünüyorsun, eğer böyle bir şey yapacaksa? (Statik kurucu, ilk yöntemi veya özellik çağrısını yürütmeden hemen önce çağrılır. İlk yöntem veya özellik dokunuluncaya kadar herhangi bir statik durum önemsizdir). –

cevap

24

Sen

RuntimeHelpers.RunClassConstructor(typeof(YourType).TypeHandle); 
+0

Yalnızca yapıcıyı bir kez mi çalıştırıyor? –

+1

@RobertHarvey, evet, birden fazla kez çağırsanız bile, statik yapıcıyı yalnızca bir kez çalıştırır. –

+1

Yup, daha yeni kontrol ettim ve bu iyi çalışıyor gibi görünüyor. –

İlgili konular