我目前正试图让我的头在结构映射中,因为ObjectFactory静态函数已被标记为过时。结构图IContainer实现
从长远来看,我必须在MVC和WebApi应用程序中使用它。在以前使用时,将一行指向静态方法的行放在global.asax中,以使用ObjectFactory初始化所有内容。
ObjectFactory.Initialize{
container.For .....
}
试图将其转换为新的IContainer的方法,我想出了但是下面我想知道如果我实际上已经在不经意间实现我的方法,这经常提到反模式。
的静态方法返回容器:
public class StructureMapConfig
{
public static IContainer GetContainer()
{
return new Container(container =>
{
container.For<IUserService>().Use<UserService>();
container.For<IStringService>().Use<StringService>();
container.For<IUserRepository>().Use<UserRepository>();
});
}
}
Userservice的contstructor看起来像这样:
public class UserService : IUserService
{
private readonly IUserRepository _userRepository;
private readonly IStringService _stringService;
public UserService(IUserRepository userRepository, IStringService stringService)
{
_userRepository = userRepository;
_stringService = stringService;
}
最后INITIALISE(这种情况在一个控制台应用程序)看起来财产以后这样的:
private static IUserService _userService;
private static IContainer _container;
static void Main(string[] args)
{
_container = StructureMapConfig.GetContainer();
_userService = _container.GetInstance<IUserService>();
}
所以对我的问题。
- 我做错任何事情严重错在这里
- 在UserService,我要传递的IContainer中和使用对象的工厂来获得实例,或者我应该保留原样。
- 从静态方法返回IContainer最好的方法
- 如果这是一个MVC应用程序,是否最好在Global.asax中创建一次,或者控制器构造函数应该每次调用静态方法。
感谢您的任何建议。
感谢JoeMighty,这里有一些非常好的信息。很高兴看到我离它不远。再次感谢。 – Morn
不是问题!你绝对是在正确的轨道上。 –