2008-09-16 15 views
0

Bazı dillerde, türlerin nasıl oluşturulduğunu denetlemek için "yeni" anahtar kelimeyi geçersiz kılabilirsiniz. Bunu doğrudan .NET'te yapamazsınız. Ancak, bir "Tür bulunamadı" istisnası ele almak için bir yol olup olmadığını merak ediyordum ve "yeni" edip bu türün patlamasından önce bir türü manuel olarak çözüyor muyuz?.NET'te türlerin nasıl çözüleceğini ve örneklendirilebileceğini değiştirebilir miyim?

xml tabanlı bir dosyada okuyan ve içinde açıklanan türleri gösteren bir seri hale getirici kullanıyorum. Diziselleştirici üzerinde herhangi bir kontrole sahip değilim, ancak kendi appdomain ana bilgisayarımı yazmadan, bu süreçle etkileşime girmek istiyorum.

Lütfen alternatif serileştirme yöntemleri önermeyin.

cevap

5

İşlemde yer almak için AppDomain.CurrentDomain.AssemblyResolve öğesine bir olay işleyicisi ekleyebilirsiniz.

EventHandler, ResolveEventArgs içinde geçirilen türden sorumlu olan grubu iade etmelidir.

Sen geçersiz kılabilirsiniz AppDomain.TypeResolve olay da var MSDN

+0

Not: Bu, Mono'da sorunludur. – leppie

-1

Reflection ve Activator sınıfını kontrol etmelisiniz. Dizelerden nesneler oluşturmanıza izin verecekler. Verilen nesne, erişiminiz olan meclislerden birinde olmalıdır.

1

bu konuda daha fazla bilgi bulabilirsiniz.

1

select isn't broken, buna nasıl bakılacağını tartışır - hata, sizin takımınızda değil tasarımınızda olabilir.

Başka bir şey yapmak için "yeni" olmaya çalışmanın yanlış bir yaklaşım olacağını düşünüyorum.

Operatörün aşırı yüklenmesinin neden dikkatli kullanıldığını bir düşünün - bu, dil anlambiliminde gizli değişiklikler olduğunda karşı-sezgisel ve hata ayıklaması zor.

Geri adım atıp tasarıma daha geniş bir bağlamda bakın, sorunu çözmek için daha mantıklı bir yol bulmaya çalışın.

+0

Sürecin daha zarif olduğunu düşünüyorum ve her friggen montajı yüklediğimden daha zarif olduğunu düşünüyorum. – Will

+0

"Her meclisi körü körüne yüklemelisin" demiyorum. Bu sorunun bir belirtisidir. Bu semptoma eğilimli olmayan bir tasarım bulmayı deneyin. – Anthony

İlgili konular