2014-11-10 25 views
11

W zamku, kiedyś wykonać następujące czynności, aby zarejestrować typy z innego zespołu:Autofac rodzaje montażu rejestr

Classes.FromAssemblyNamed("MyServer.DAL") 
     .Where(type => type.Name.EndsWith("Repository")) 
     .WithServiceAllInterfaces() 
     .LifestylePerWebRequest(), 

W Autofac, zmienić powyższy kod do tego:

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) 
     .Where(t => t.Name.EndsWith("Repository")) 
     .InstancePerRequest(); 

Is to się zgadza?

+0

Czy działa po uruchomieniu? –

+0

Kod się kompiluje i wykonuje, ale nie sądzę, że jest poprawny, ponieważ nie mogę uzyskać dostępu do mojego interfejsu API (błąd 500). –

+0

[This] (http://stackoverflow.com/questions/10027330/how-to-resolve-autofac-instanceperhttprequest) może pomóc –

Odpowiedz

12

Jest to poprawny sposób:

builder.RegisterAssemblyTypes(AppDomain.CurrentDomain.GetAssemblies()) 
     .Where(t => t.Name.EndsWith("Repository")) 
     .AsImplementedInterfaces() 
     .InstancePerRequest(); 
2

Dla UWP prawidłowy sposób jest nieco zmieniać:

var assemblyType = typeof(MyCustomAssemblyType).GetTypeInfo(); 

    builder.RegisterAssemblyTypes(assemblyType.Assembly) 
    .Where(t => t.Name.EndsWith("Repository")) 
    .AsImplementedInterfaces() 
    .InstancePerRequest(); 

Dla każdego zespołu trzeba wziąć jeden typ, który należy montaż i odzyskać odnośnik Zgromadzenia z niego . Następnie buduj kanał tego linku. Powtarzać.