2012-06-27 37 views
7

Autofac, birden çok arabirimi aynı örneğe çok kolayca .AsImplementedInterfaces() veya zincirleme ile sağlar. <>() .SingleInstance() ile birlikte çağırır. Bu TinyIoC ile de yapılabilir mi? Sadece aynı arayüzün çoklu uygulamalarını nasıl kaydedeceğimi buldum, ancak kayıtların veya benzerlerinin zincirlenmesi mümkün değil.TinyIoC: Tek bir örnek üzerinde birden fazla arabirim kaydetme

Anlayışımdan bu bir IoC konteyneri için oldukça önemli bir özellik değil mi? Ben doğru anlamak ediyorsam

cevap

9

Eğer

public class MyThing : IFoo, IBar 
{ 
} 

böyle bir şey var Ve birbirinizle aynı örneğini döndürmek için aşağıdaki istediğiniz:

Resolve<IFoo>(); 
Resolve<IBar>(); 

Eğer öyleyse, bu mümkün, ama bu çirkin biraz: İstesen

container.Register<IFoo, MyThing>(); 
container.Register<IBar>((c,p) => c.Resolve<IFoo>() as IBar); 

muhtemelen bazı güzel söz dizimi içine sarmak, ama bu fa Kement delege, kaputun altında ne olacağı konusunda etkilidir.

+0

Teşekkürler! Böyle bir şey bulmaya çalışıyordum, ama dün gece aklımı başaramadı. – TeaDrivenDev

İlgili konular