Я пытаюсь создать общие методы из своих классов репозитория. Идея - это метод, который что-то делает и возвращает экземпляр класса, который его назвал.Методы расширения - как вернуть правильный тип в наследование?
public class BaseRepository { }
public class FooRepository : BaseRepository { }
public class BarRepository : BaseRepository { }
public static class ExtensionRepository
{
public static BaseRepository AddParameter(this BaseRepository self, string parameterValue)
{
//...
return self;
}
}
// Calling the test:
FooRepository fooRepository = new FooRepository();
BaseRepository fooWrongInstance = fooRepository.AddParameter("foo");
BarRepository barRepository = new BarRepository();
BaseRepository barWrongInstance = barRepository.AddParameter("bar");
Ну, таким образом я могу получить экземпляр BaseRepository. Но мне нужно получить экземпляры FooRepository и BarRepository, которые вызвали этот метод. Есть идеи? Огромное спасибо!!!
Вы понимаете, что 'class' тип переменной просто _reference_ к объекту? Какова цель возвращения той же ссылки обратно вызывающему методу? У него уже есть эта ссылка. Может быть веская причина (вот почему я спрашиваю). Дополнение. В приведенном выше примере использования знак '=' просто присваивает ссылку на эту же ссылку на новую переменную. Это не «неправильный пример». Метод не создает новые экземпляры; это тот же самый экземпляр. –
Цель возвращения той же ссылки, Jeppe, состоит в том, чтобы реализовать множество вызовов метода в строке. «Неверный экземпляр» - это способ сказать, что я хочу, чтобы экземпляры детей возвращались, но не базовый класс, вы знаете? – Kiwanax
Теперь я понимаю. Правильный термин «неправильный (нежелательный) тип времени компиляции» или «тип переменной», я думаю. –