5

Bir sınıfı çözmek için Ninject 3.0 kullanıyoruz. Oldukça sıkıcı standart şeyler: ... şey oluşturarak zaman Ninject - Yapı sırasında hangi sınıfın istisna attığını nasıl belirleriz

IKernel kernel = GetKernel(); 
var foo = kernel.Get<IFoo>(); 

Ancak belirli bir makinede, bir istisna alıyoruz. Neyin havaya uçtuğunu biliyoruz, ancak günlüğe kaydetme çerçevesindeyiz (Common.Logging) ve bu kod, tüm/yapımcıların çoğunda, codebase boyunca kullanılmaktadır.

Her kurucuyu bir try/catch içine koyma ve tip bilgisiyle istisnaları sarmalama dışında, Ninject'den sorun yaşadığına dair hiçbir yararlı bilgi almam.

Ninject'i, hangi sınıfın yaratılamadığı konusunda bize anlatabileceğimin bir yolu var mı?

Another person asks a similar question, ancak bunların çözümü işe yaramıyor - istisnaları Access çerçevesinden değil, Ninject'den alıyoruz.

+3

Lütfen bize iç istisnaların stacktrace'i dahil yığın izlemesini gösterin. Bu bilgi, başlatılamayan sınıfın yapıcısını içermelidir. – Steven

+0

Başlamada başarısız olan sınıf, tam olarak bana söylemek için Ninject almaya çalışıyorum. Bu sınıfı vermez. –

+0

Bana Ninject'deki bir böcek gibi geldi. Ninject atılan istisnayı sarmalı. Bunu, Ninject ekibine bir hata olarak rapor etmelisiniz. – Steven

cevap

-1

Bu gerçekten bir çözüm değil, sorun yaşadığım zaman sorun bağımlılığını bulana kadar yapıcı bağımlılıkları tek tek el ile sildim. Bütün işleri bir bağımlılık olmadan doğruladığımda, o somut uygulamaya giriyorum. Esasen özyinelemeli olarak, giriş noktasından her bir bağımlılıktan aşağıya iniyorum, bağımlılık bağımlılığı belirlenene kadar her bağımlılığı ortadan kaldırıyorum. Yorucu ama kaba kuvvet henüz beni başarısızlığa uğratmadı. Sorunun sebebi olan özel bir kurucuyla karşılaştığımda bile, hiç bir zaman kaba kuvvet olmadan bunu elde edemedim. Daha yaygın olsa da, bir yerde ya da koşullu bir enjeksiyonun bağlanmamış bir türüdür.

+0

Evet, maalesef bazen bu gerçekten büyük sistemlerde gerçekleşir - ve bağımlılık sayısı binlerce olmasa bile yüzlerce kişiye ulaşabilir. –

İlgili konular