2013-07-13 10 views
5

Ich versuche Autofac zu verwenden, um den gierigsten Konstruktor in einer referenzierten dll zu finden.Autofac finde den gierigsten Konstruktor nicht

Es findet es nicht und findet nur den einen parameterlosen Konstruktor.

Dies sind die beiden ctors:

public SimpleAuthenticationController() { .. } 

public SimpleAuthenticationController(IAuthenticationCallbackProvider callbackProvider) : this() 

Nun ist dies, wie ich das Zeug mit autofac registrieren:

var builder = new ContainerBuilder(); 

builder.RegisterType<SampleMvcAutoAuthenticationCallbackProvider>().As<IAuthenticationCallbackProvider>(); 
builder.RegisterControllers(typeof(MvcApplication).Assembly); 
builder.RegisterControllers(typeof(SimpleAuthenticationController).Assembly); 

var container = builder.Build(); 
DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 

nichts zu komplex.

Aber das ist das einzige komische Ding, das ich mir vorstellen kann.

  1. typeof(MvcApplication) ist das gleiche Projekt, bei dem dieser Code existiert in, in global.asax
  2. typeof(MvcApplication) in einer -seperate- DLL gefunden, die ich über AddReferences manuell hinzugefügt.

Wer sieht was ich falsch gemacht habe?

+0

Was passiert, wenn Sie den parameterlosen Konstruktor vorübergehend auskommentieren - löst er erfolgreich den anderen? –

+0

Ich werde überprüfen. bitte halten .. –

+0

Bestätigt, funktioniert gut mit dem parameterlosen ctor auskommentiert. –

Antwort

2

Problem war, dass mein Gieriger -was- immer genannt wurde .. aber wenn du auf den gierigen-Ctor guckst, wirst du sehen, dass ich : this() mache.

sehr lahm Neuling Fehler.

So nannte es die gierige ctor, aber bevor es in den Anwendungsbereich geht, muss es auf die anderen parameterlosen ctor sprudeln.

Und ich dachte immer, dass es das Gierige überspringe und nur das Parameterlose trifft.

Fehler zwischen Benutzer und Tastatur.