![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Gluttton |
|
||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Доброго времени суток!
Есть базовый класс - MembershipProvider. Необходимо наследовать от него собственный класс - MyMembershipProvider. При этом необходимости в реализации всех методов (и свойств) базового класса нет. Например нет необходимости в реализации таки методов как: - public override MembershipUserCollection FindUsersByName (string nameToMatch, int pageIndex, int pageSize, out int totalRecords); - public override void UpdateUser (MembershipUser user); - и т.д. Как сделать заглушку на такие методы? Наверное можно так:
И так:
Или правильнее будет так:
И так:
-------------------- Слава Україні! |
||||||||
|
|||||||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Если вам не нужно наследовать эти два метода, то пометьте их в базовом классе как sealed.
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
ДобренькийПапаша, дело в том, что MembershipProvider - стандартный класс (System.Web.Security) и я работаю не с исходным кодом, а с *.dll.
-------------------- Слава Україні! |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
Чтобы оставить реализацию базового класса, напишите внутри метода:
-------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
ДобренькийПапаша, такой вариант не пройдет, т.к. выяснилось, что методы базового класса являются абстрактными -------------------- Слава Україні! |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: 3 Всего: 7 |
аааа....
Ну тогда вы их ОБЯЗАНЫ реализовать))) Реализуйте по своему усмотрению, но только эксепшен не кидайте. За что вы так пользователя наказать хотите?))) Может быть есть смысл сказать пользователю мол, "этот метод не работает!". НО, у меня такое ощущение, что вы приняли неверное решение наследоваться от этого класса. Скорее всего, это неверное проектировочное решение, ибо если разработчик базового класса пометил методы как абстрактные, то он имел ввиду, что наследник будет ОБЯЗАН дать реализацию этого метода... То как вы переопределили, то есть, ничего, по сути, не делаете в этих методах подойдёт в качестве заглушки, но, повторюсь, я думаю, что в проектировании у вас ошибка. Это сообщение отредактировал(а) ДобренькийПапаша - 22.8.2010, 10:46 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
| Gluttton |
|
||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Да я уже это понял
Я просто прочитал, что это специальное исключение, как раз для тех случаев, когда нужно явно сказать, что метод не реализован.
Это необходимо для того, что бы "натянуть" аутентификацию на БД не стандартной структуры и этот способ описан в MSDN. Пожалуй, прийдется на этом способе и остановиться. Спасибо за советы! -------------------- Слава Україні! |
||||
|
|||||
| gambit |
|
||||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
да, но мне кажется, что применяется он в основном студией, для того что бы, вы не забыли реализовать метод, ибо мимо него не пройдете)) приложение упадет. если бы передо мной стола ваша задача, то я бы сделал
|
||||
|
|||||
| Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
gambit,
Ну тут, как бы все понятно. А вот здесь:
я сначала везде забил null, но gendarme (утилита для анализа кода) мне сказал, что null возвращать не солидно и подсказал возвращать вновь созданый объект.
А я то думаю, почему gendarme мне на них отругался с высокой степенью важности. Я очень рад - получается я сделал правильно (росту над собой Спасибо за советы, тема закрыта! -------------------- Слава Україні! |
||||||
|
|||||||
| gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: 3 Всего: 40 |
в принципе согласен. Это сделано для того, кто ждет объект далее. Если мы будем с ним работать, то упадем так как ожидается объект, а мы получили null, вариант, только заворачивая каждый кусок в проверку на null, что не является красивостью. Но задачи бывают всякие, и не стоит полагаться на анализаторы кода, как на панацею от всех проблем. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 17 Всего: 306 |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |