Я заметил, что я делал это много (в основном потому, что все мои методы не являются статическими):Это хороший подход для вызова метода на конструкторе в C#?
var person = new Person();
var addresses = person.GetAddresses();
Много раз мне просто нужно вызвать метод один раз в моем другом методе , Я заметил, что могу просто сделать это вместо этого:
var addresses = new Person().GetAddresses();
Есть ли проблемы с этим? Мне кажется, что гораздо меньше набирает текст для меня. Например, если бы я хотел, чтобы загрузить модель с адресами, я могу просто сделать:
public ActionResult HelloWorld() {
var model = new MyModel { Addresses = new Person().GetAddresses() };
return View(model);
}
Что вы думаете, ребята?
Btw, мои методы нестатические, потому что я использую репозиторий. Мой класс настроен примерно так:
private IMyRepository _myRepository = new MyRepository();
Person() {
// initialize properties
}
// Constructor for unit testing...
Person (IMyRepository repository) : this() {
_myRepository = repository;
}
public GetAddresses() {
return _myRepository.GetAddresses();
}
Класс person - это хранилище и ваш POCO/Model? Если это так, это активная запись, а не шаблон репозитория! Если нет, не следует ли его называть PersonRepository? Если вы хотите получить адреса, как насчет класса AddressRepository с помощью метода GetAddressesByPerson? –
Я только что обновил свой вопрос с большим количеством кода о том, как настроен мой класс Person. Он использует репозиторий. Это не репозиторий. – user1005793
Почему конструктор Person получает IMyRepository? Ваши классы моделей должны быть отделены от доступа к данным и никогда не беспокоиться об этом. Похоже, вы нарушаете [принцип единой ответственности] (https://en.wikipedia.org/wiki/Single_responsibility_principle). Я думаю, что реализация «IPersonRepository» должна отвечать за настройку атрибута Addressess (или что-то в этом роде) вашей модели. –