Я «новый» при использовании Injection Dependency, и мой вопрос: где я могу использовать оператор new
? В следующем примере я покажу вам пример, и мне нравится знать, правильно ли я использую оператор new
.Зависимость Инъекция, где использовать «новый» Оператор
Пример для ASP.NET MVC с CustomControllerFactory
, все работает до сих пор.
Сначала я Мой Entity Класс Member
:
public partial class Member
{
public Member()
{
this.LoginTries = 0;
}
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public DateTime CreationDate { get; set; }
public int LoginTries { get; set; }
}
Тогда есть интерфейс для некоторых действий пользователя:
public interface IDiMembership<TUser>
{
bool Login(string username, string password, bool rememberMe = false);
void Logout();
//This is the Function I am using later and where i am using the new Operator
bool CreateUser(string username, string password, TUser user);
...
}
Моя реализация для моего интерфейса:
public class DiMembership : IDiMembership<Member>
{
...
public bool CreateUser(string username, string password, Member user)
{
user.PasswordSalt = Crypto.GenerateSalt();
user.Password = Crypto.HashPassword(
string.Format("{0}{1}", password, user.PasswordSalt));
user.Username = username;
user.CreationDate = DateTime.Now;
...
}
И мой звонок Controller
, и вот мой вопрос: правильно позвонить CreateUser
с новым «членом» или для создания нового объекта Member
префикс некоторые значения? Соответствует ли это DI или как правильно решить проблему?
private readonly IDiMembership<Member> _membership;
public AccountController(IDiMembership<Member> membership)
{
_membership = membership;
}
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid &&
_membership.CreateUser(model.Username, model.Password, new Member()))
{
return RedirectToAction("RegisterSuccess");
}
...
}
Читайте это: [К «новому» или не к «новому»] (http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/). – Steven