2014-11-10 10 views
11

In Castello, che ho usato per eseguire le seguenti operazioni per registrare i tipi da un assembly diverso:autofac tipi di montaggio registro

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

In Autofac, modificare il codice qui sopra per questo:

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

Is è corretto?

+0

Funziona quando lo si esegue? –

+0

Il codice viene compilato ed eseguito ma non penso sia corretto perché non riesco più ad accedere alla mia API (errore 500). –

+0

[Questo] (http://stackoverflow.com/questions/10027330/how-to-resolve-autofac-instanceperhttprequest) può aiutare –

risposta

12

Questo è il modo corretto:

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

Per UWP modo corretto è un po 'altera:

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

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

Per ogni gruppo si deve prendere tipo unico che appartiene assemblaggio e recuperare il legame di assemblaggio da esso . Quindi alimenta il generatore con questo link. Ripetere.