No se puede conseguir mi cabeza alrededor del paso de parámetros en Autofac, el código siguiente no funciona:Autofac paso de parámetros y autowiring
class Config {
public Config(IDictionary<string, string> conf) {}
}
class Consumer {
public Consumer(Config config) {}
}
void Main()
{
var builder = new Autofac.Builder.ContainerBuilder();
builder.Register<Config>();
builder.Register<Consumer>();
using(var container = builder.Build()){
IDictionary<string,string> parameters = new Dictionary<string,string>();
var consumer = container.Resolve<Consumer>(Autofac.TypedParameter.From(parameters));
}
}
que arroja:
DependencyResolutionException: The component 'UserQuery+Config' has no resolvable constructors. Unsuitable constructors included:
Void .ctor(System.Collections.Generic.IDictionary`2[System.String,System.String]): parameter 'conf' of type 'System.Collections.Generic.IDictionary`2[System.String,System.String]' is not resolvable.
pero el siguiente código hace trabajo:
IDictionary<string,string> parameters = new Dictionary<string,string>();
var config = container.Resolve<Config>(Autofac.TypedParameter.From(parameters));
var consumer = container.Resolve<Consumer>(Autofac.TypedParameter.From(config));
Su pregunta no es muy clara. Por el bien de aquellos de nosotros que no somos usuarios de autofac, ¿podría mostrar las declaraciones de p, config, TypedParameter.From y container.Resolve? Además, especifique de qué forma "no funciona": ¿error de tiempo de compilación? ¿Excepción? –
clarificado con un ejemplo ejecutable en ej. LINQPad (referencia Autofac.dll) –