我正在写以下课程
public class UserApplication
{
private IUserRepository UserRepository { get; set; }
private IUserEmailerService UserEmailerService { get; set; }
public UserApplication(IUserRepository userRepository, IUserEmailerService userEmailerService)
{
this.UserRepository = userRepository;
this.UserEmailerService = userEmailerService;
}
public bool Authenticate(string login, string pass)
{
// Here I use UserRepository Dependency
}
public bool ResetPassword(string login, string email)
{
// Here I only use both Dependecies
}
public string GetRemeberText(string login, string email)
{
// Here I only use UserRepository Dependency
}
}
我正在使用 Unity 来管理我的实例,所以我意识到我只在一个方法上使用两个依赖项,所以当我要求容器为这个类提供一个实例时,两个依赖项都注入到这个类中,但我不需要这两个所有方法的实例,因此在验证用户中我只需要存储库。那我这样做错了吗?是否有另一种方法仅具有我在此类中的所有情况下使用的依赖关系?
我想使用命令模式,所以我用一种方法对 3 个类进行分类,并且只有我需要的依赖项,如下所示:
public class AuthenticateUserCommand : ICommand
{
private IUserRepository UserRepository { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public void Execute()
{
// executes the steps to do that
}
}
public class ResetUserPasswordCommand : ICommand
{
private IUserRepository UserRepository { get; set; }
private IUserEmailerService UserEmailerService { get; set; }
public string Login { get; set; }
public string Email { get; set; }
public void Execute()
{
// executes the steps to do that
}
}