Называть сложно, если не соблюдается SRP :)
Но имена членов часто используются неправильно.
В твоем случае я сделаю что-то вроде этого:
- ответственность за реализацию заключается в покрытии указанного договора о постоянстве
- "кто" под огнем
Думает без голоса
- постоянство сделано для пользователя, и соответствующее имя может быть IUserRepository
- методов не больше чем для CRUD
- из-за того, что IUserRepository предназначен для пользователя, необязательно иметь UserSave, UserUpdate, поскольку он тормозит общий способ использования
Магия здесь ... просто сделайте это:
public interface IRepository<TYPE, KEY>{
IList<TYPE> GetAll(KEY key);
TYPE GetById(KEY key);
void Save(TYPE obj);
void Update(TYPE obj);
void Delete(Key key);
}
Это сложно?
Что делать с кастомным?
public interface IUserRepository : IRepository<User, int>
{
IList<User> GetAllMyFavorites(ICriteria crit);
IList<Events> GetHistoryByUser(User user);
}
В коде, использующем контейнер IoC, вы можете легко это сделать
public UserController {
private _userRepository = null;
private _eventsRepository = null;
public UserController(IUserRepository userRepository,
IRepository<Events,int> eventsRepository)
// if you are doing here just CRUD use the generic signature
{
_userRepository = userRepository;
_eventsRepository = eventsRepository;
}
public MarkItAsGoldPartener(int userId){
var user = userRepository.GetById(userId);
user.PartnerType = PartnerTypes.Gold;
userRepository.Save(user); // the user in member name is useless
eventsRepository.Save(new Event(){Message = "The user" + UserId + "is golden" });
}
}
удачи :) 1022 *