có thể không nhận được đầu của tôi quanh tham số đi qua trong Autofac, đoạn code sau không làm việc:Autofac qua tham số và 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));
}
}
mà ném:
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.
nhưng đoạn mã sau hiện hoạt động:
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));
Câu hỏi của bạn không rõ ràng. Vì lợi ích của những người không phải là người dùng autofac, bạn có thể hiển thị các khai báo của p, config, TypedParameter.From và container.Resolve không? Ngoài ra, xin vui lòng ghi rõ trong cách nó "không hoạt động" - biên dịch lỗi thời gian? Ngoại lệ? –
được làm rõ bằng một ví dụ có thể chạy được trong ví dụ. LINQPad (tham khảo Autofac.dll) –