干得好
我们将首先创建一个UserModelService
如下
public class UserModelService
{
public User Load(int id)
{
var userRepository = new UserRepository();
var user = userRepository.Load(id);
var addressRepository = new AddressRepository();
user.Address = addressRepository.LoadForUserId(id);
return user;
}
}
然后我们将修改控制器中的原始代码,如下所示
public ActionResult Index()
{
var userModelSerice =new UserModelService();
var user = userModelService.load(1);
return View(user);
}
上面所有剩余的代码参考如下
public class AddressRepository
{
public Address LoadForUserId(int id)
{
// Load the address for given user id
}
}
public class UserRepository
{
public User Load(int id)
{
// Load and return user
}
}
public class User
{
public Address Address { get; set; }
}
public class Address
{
}
UserModelService
现在在您的控制器操作中,您可以通过构造函数将其注入,而不是创建 的新实例。可以应用类似的原则将存储库注入其中,UserModelService
但这将是另一个大讨论,所以我会在这里打断自己。