我一直在尝试集成最新版本的 autofac (1.3.3.54),但遇到了以下问题。
根据项目的 Google 代码 wiki,在注册回调中使用参数的推荐方式如下:
builder.Register((c, p) => new Foo(p.Get("arg1")));
但是,这不会与提到的 autofac 代码版本一起编译。我查看了源代码,发现 p 是一个 IEnumerable (ComponentActivatorWithParameters)。相对于文档,代码是否已过时?
我一直在尝试集成最新版本的 autofac (1.3.3.54),但遇到了以下问题。
根据项目的 Google 代码 wiki,在注册回调中使用参数的推荐方式如下:
builder.Register((c, p) => new Foo(p.Get("arg1")));
但是,这不会与提到的 autofac 代码版本一起编译。我查看了源代码,发现 p 是一个 IEnumerable (ComponentActivatorWithParameters)。相对于文档,代码是否已过时?
似乎代码已更改,Wiki 上的文档尚未更新。“Get”方法现在是“Named”,“Parameter”类现在是“NamedParameter”。请参见以下示例:
var builder = new ContainerBuilder();
builder.Register((c, p) => new Person(p.Named<string>("name")));
using (var container = builder.Build())
{
var person = container.Resolve<Person>(new NamedParameter("name", "Fred"));
}
希望有人可以尽快更新文档。
我已将AutoFac 1.3 的新构建文档附加到 AutoFac 问题#121。我希望他们至少在他们退出 1.3 分支并支持 .NET 2.0 之前恢复发布官方 1.3 文档。