Bazı DI çerçevelerinin bunu desteklediğini biliyorum (ör. Ninject), ancak özellikle Autofac ile mümkün olup olmadığını bilmek istiyorum.Can Autofac otomatik kendiliğinden kapama yapabilir mi?
Beton sınıfı için bir Autofac konteynırı isteyebilir ve o beton sınıfını kaydetmeden enjekte edilen tüm uygun kurucu bağımlılıkları ile bir örnek geri alabilirim. Ben açıkça bağlamak asla eğer ben bu yararlı olacağını zaman iyi bir örnek ViewModels
builder.Register<MyClass>();
denilen sanki yanı, daha sonra otomatik kendisine somut sınıfını bağlamak. MVVM'de katmanlama, yalnızca ViewModel'e bağlı olan ve gevşek yazım yoluyla, ve yine de Görünümü birleştirilmiş olarak test etmeyecek şekilde olur. Bu nedenle, ViewModel'i testler için alay etmeye gerek yok - ve bu nedenle her ViewModel için bir arayüze sahip olmak için bir sebep yok. Bu durumda, "bu sınıfa çözüm bulmak için bu arayüzü kaydet" ifadesinin olağan DI modeli gereksiz bir karmaşıklıktır. builder.Register<MyClass>();
gibi açık bir şekilde kendine bağlanma, somut bir sınıf olarak basit bir şeyle uğraşırken gereksiz bir adım gibi hissettirir.
Autofac belgelerinde reflection-based registration example'un farkındayım, ama bu benim de zevkim değil. Her olası sınıfa zaman ayırmanın karmaşıklığını (ve yavaşlığını) istemiyorum; Çerçevenin bana ihtiyacım olduğunda ihtiyacım olanı vermesini istiyorum. Konfigürasyon sözleşmesi ve tüm bunlar.
Autofac'i yapılandırmanın herhangi bir yolu var mı? Böylece "Ah, bu somut bir tiptir ve henüz kimse onu kaydettirmedi, bu yüzden sadece varsayılan ayarlarla kayıtlı gibi davranacağım"?
builder.RegisterTypesFromAssembly(Assembly.GetExecutingAssembly());
hiçbir yansıması Peter Lillevold points out olarak, yapılır: ne hakkında
Sweet - Tam olarak aradığım şey gibi geliyor. Teşekkürler! –