2012-11-27 17 views
5

soru oldukça basittir.I genel olarak AutoFac konteynerine erişmek istiyorum, böylece bağımlılığımı kayda geçirebilirim.Orchard'da bir bağımlılığı kaydetmek için genel AutoFac konteynerine nasıl erişilir?

sözler:

yapmam .o i istiyorum ki, (iki meclislerinin) dairesel referans sonuçlanır Projemdeki IDependency sebepten miras Tamam değilim bir anahtar ve erişim bunu bir bileşen kaydı olduğu diğer montajda aynı Anahtar ile. şimdiden teşekkürler.

Düzenleme: çekirdek DefaultOrchardHostContainer adlı bir sınıfı bulduk, ancak yalnızca Resolve<> yöntemi değil Register() ortaya

.

+2

Verilen yanıt gayet iyi, ancak gerçek dairesel referans sorununuzla ilgili bazı bilgileri vermek istiyorum. Orchard'da, bağımlılık enjeksiyonu için arabirim eşlemesi arayüz adında yapılır, böylece aynı arabirim adını iki modülden tanımlayabilirsiniz ve bunlar aynı kabul edilir. Bu çekirdek modüllerde çeşitli yerlerde kullanılır. Diğer tipte dairesel referanslar için, çemberi kırmak amacıyla bir Çalıştırma veya bir T yerine bir Lazy kullanmak da mümkündür. –

+0

@Ben bir süper man.many çok teşekkürler.Arama haritalama için arabirim adını kullanarak hakkında hayal bile edemiyorum.Yatayda bağımlılık enjeksiyon hakkında bu bilgi çok çok yararlı.Ondan bu şeyleri öğrenme ile çok şanslıyım. Cevabını takdir ediyorum. –

cevap

7

Orchard modülünüze doğrudan bir Autofac modülü ekleyebilir ve Orchard alır. ex ...

public class MyModule : Module { 
    protected override void Load(ContainerBuilder builder){ 
     builder.RegisterType<MyDependency>().As<IMyDependency>().InstancePerDependency(); 
    } 
} 
+1

Kimlik saptamasının kendisi değil, iki montaj arasındaki referanstır. Http://stackoverflow.com/questions/13507505/how-to-resolve-a-dependency-between-two-tightly-coupled-namespacein- daha fazla detay için farklı-a. –

+0

"Orchard modülü" ile ne demek istediğimi söyleyebilir misiniz? –

+0

Sanırım çözümüm "Orchard modülüne doğrudan bir Autofac modülü ekleyebilirsin ve Orchard onu alacak." –

İlgili konular