Używam Unity i Unity.AutoRegistration. Ta linia dla Jedności:Używanie Unity, Jak mogę autoregryfikować klasę ogólną z interfejsem generycznym bez rejestrowania KAŻDEGO jej typu.
unityContainer.RegisterType(typeof(IAction<>), typeof(Action<>));
skutecznie rejestruje każdą klasę w projekcie IAction/Działanie:
unityContainer.RegisterType<IAction<ObjectA>, Action<ObjectA>>();
unityContainer.RegisterType<IAction<ObjectB>, Action<ObjectB>>();
unityContainer.RegisterType<IAction<ObjectC>, Action<ObjectC>>();
[...]
unityContainer.RegisterType<IAction<UnrelatedObject>, Action<UnrelatedObject>>();
[...]
Ale chcę tylko konkretne obiekty mają być rejestrowane. Jak to zrobić? Domyślam się, że do niestandardowych klas dodano niestandardowy dekorator atrybutów.
[ActionAtribute]
public class ObjectB
{ [...] }
I spróbuj użyć Unity.AutoRegistration. To tutaj utknąłem w:
unityContainer.ConfigureAutoRegistration()
.Include(If.DecoratedWith<ActionAtribute>,
Then.Register()
.As ?? // I'm guessing this is where I specify
.With ?? // IAction<match> goes to Action<match>
)
.ApplyAutoRegistration();
To jest dokładnie to, czego potrzebowałem! Dziękuję za przykład. – Jaguir
Nie sądzę, że jest jakiś sposób, aby to zrobić w konfiguracji przy użyciu Unity 2.0? –