我目前正試圖讓我的頭在結構映射中,因爲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
不是問題!你絕對是在正確的軌道上。 –