2010-02-23 6 views
5

bulunan Ninject dan (T) Bind olduğunu.Ben .NET 3.5 ve sonunda bir pencere hizmeti olacak bir konsol uygulaması kullanıyorum

Ben derleyici hala şikayet ediyor projemde ve I referans olarak tüm DLL dahil ettik

Bind<IWeapon>().To<Sword>(); 

gibi bir şey kullanmak bulmak örnekler çoğu. Nereye gittiğimin herhangi bir ipucu var mı? Üzgünüm bu aptalca bir soru olabilir.

GÜNCELLEME: Sadece ihtiyaç gibi görünüyor ama değil başvurulan diğer kütüphanelerin bir sürü dikkat edin. Castle Core gibi kütüphaneler var. Bunlar dahil edilmeli mi?

cevap

7

size geçersiz Yük yöntemi içinde bir Ninject modülü içinde bağlayıcı kodu çalıştıran yaptığından emin olmak için gereken ilk şey. Örneğin

:

public class ApplicationModule : NinjectModule { 

    public override void Load() { 

    Bind<IWeapon>().To<Sword>(); 

    // additional bindings continue ... 
    } 
} 

NinjectModule sınıfı bu yüzden sınıf kapsamında Bind<T>() yöntem kullanılabilir hale Ninject akıcı bağlanma sözdizimi tanımlayan sınıfları ve arabirimler devralır. çekirdek örneği zaman bu modülleri daha sonra Ninject çekirdeğe geçirilen:

var kernel = new StandardKernel(new ApplicationModule()); 

çekirdeğe geçirilen her bir modülün Load() Yöntem, daha sonra çağrılır ve bağlayıcı tanımlar çalıştırılan yöntemler içinde ihtiva etmiştir.

Yukarıdaki örnekte, temel sınıf olarak NinjectModule belirtir; Ancak, bu, Ninject'in 2.0 sürümüne özgüdür. Eğer Ninject 1.x kullanıyorsanız, temel sınıfınız StandardModule olacaktır. Her iki durumda da, yük yöntemi geçersizdir ve burada her iki sürümde de benzer olan bağlayıcı ifadeler verilir.

daha da soruya cevap vermek için:

  • Ninject 1.x için gerekli DLL ninject.core.dll ve StandardModule tanımlanan ad Ninject.Core olduğunu.

  • Ninhect 2.0 için gerekli DLL, ninject.dll ve NinjectModule'nin tanımlandığı ad alanı, Ninject.Modules'tır. Eğer Ninject 1.x durumunda vb bağlamsal bağlamaları veya kapsam da bağlamaları, kullanırsanız, yani - Her iki durumda da

, size bağlayıcı ifadeler almak ne kadar karmaşık bağlı olarak daha fazla ad alanlarını başvurmak gerekebilir Daha karmaşık durumlar için Ninject.Conditions.dll dosyasına başvurmanız gerekebilir. Bir 1.x çekirdek özelliği ancak sürüm 2.0 bir uzantısıdır -

Sen Ninject en durdurma özelliğini kullanarak sürece Castle.Core başvurmak gerekmez.

Bu yardımcı olur umarım.

+0

Teşekkürler. Seni sadece bir kez çarpıtabilirim ve bunu daha fazlasını yapabilmeyi dilediğim doğru cevap olarak seçebilirim. Bütün öğleden sonra uğraştım. Her şeyin bir arada asılı kaldığı hakkında belgeler var ama senaryo için bir şey bulmaya çalıştım. Arama sonucuna gittiğimde, çalışmaya başladığınız diğer dersler eksik görünüyordu. – uriDium

+0

Hey, sorun değil! Ninject'i biraz kullanıyorum ve tüm IoC kapsayıcılarını karşılaştırırken uzun zamandır mücadele ettim. Yardımcı olduğuma sevindim. –

0

proje özelliklerine girmeden deneyin (sağ tık projesi ve özelliklerini tıklayın) ve yeniden hedeflenmesi, şu anda ".Net Framework 3.5 İstemci Profili" gibi bir şey söyleyerek olabilir .Net Framework 3.5 için konsol uygulaması. Geçmişte meclislerin düzgün bir şekilde referans gösteremediği aynı sorunu yaşadım. Umarım sorun budur ve bu yardımcı olur.

+0

Merhaba. Hızlı bir bakışım vardı ama bu değildi. Yine de teşekkürler. – uriDium