结构图中的默认构造函数

Luk*_*asz 2 structuremap asp.net asp.net-mvc

我在ASP.NET MVC网站上有这个代码:

x.For<AccountController>().TheDefault.Is.ConstructedBy(() => new AccountController());
Run Code Online (Sandbox Code Playgroud)

此代码抛出一个警告,似乎非常自我解释,但由于某些原因,当我使用"使用"方法时它似乎不起作用.我知道我做错了什么,并希望得到一些帮助.

警告是:

警告1'StructureMap.Configuration.DSL.Expressions.CreatePluginFamilyExpression.TheDefault'已过时:'"首选Use()方法"

谢谢.

Jos*_*gan 6

直接相当于现有代码,但使用新API,是:

For<AccountController>().Use(() => new AccountController());
Run Code Online (Sandbox Code Playgroud)

每次请求AccountController实例时,这将创建一个新的AccountController实例.

警告:如果您将一个对象实例(如RPM1984所示)而不是lambda传递给Use()方法,您将获得一个单例 - 每次请求AccountController时都会返回相同的实例.这与您之前使用Is.ConstructedBy()语法执行的代码完全不同.