| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Методы интерфейса как static |
| Автор: StepS 25.10.2005, 15:33 | ||
есть интерфейс IMyInterface нужно написать класс у которого методы этого интерфейса являются статическими. типа такого:
но так нельзя ! я не могу понять почему (сам новичок в С#) ? Объясните плз. почему так нельзя и как нужно правильно ! |
| Автор: Void 25.10.2005, 15:50 | ||
А в чем смысл такого объявления? Интерфейсы предназначены для того, чтобы работать с объектами полиморфно.
А из-за чего возникла такая необходимость? |
| Автор: Exception 25.10.2005, 18:00 |
| вместо интерфейса юзай абстракт. класс |
| Автор: StepS 26.10.2005, 10:45 |
| спасибо Run-time error. Об обстрактных я как-то забыл Необходимость возникла из-за того что у нескольких классов есть одинаковый интерфейс, а статик нужно для работы с singleton-ом |
| Автор: Hidrag 26.10.2005, 12:16 |
| .... а статик нужно для работы с singleton-ом а это что такое? |
| Автор: stab 26.10.2005, 14:43 | ||
Дык, статические члены всеравно абстрактными быть не могут. ИМХО, придется создавать объекты, т.к. статически полиморфность не реализовать. |
| Автор: arilou 27.10.2005, 15:47 | ||
А для чего тебе интерфейс "для работы с синглтоном". Поясни пожалуйста. У меня очень сильное подозрение, что все что тебе надо делается без интерфейсов. |
| Автор: Domestic Cat 28.10.2005, 08:23 |
| Не понял, где в приведенном коде синглтон. Помнится, статиком должен быть только один метод, который оверрайдить нет смысла. |
| Автор: mr.DUDA 28.10.2005, 14:24 | ||||
В его коде этого нету. Решение может быть найдено следующим способом. Если нужно, чтобы все классы, реализующие интерфейс, являлись синглтонами, можно завести в интерфейсе метод или свойство, возвращающий ссылку на единственный объект этого типа:
|
| Автор: Exception 28.10.2005, 16:45 |
| .. как и сделано в самом дотнете |
| Автор: mr.DUDA 29.10.2005, 11:14 | ||
Пример ? |
| Автор: Exception 29.10.2005, 14:23 | ||
|
| Автор: mr.DUDA 30.10.2005, 09:21 |
| Ну, это не совсем то Missing.Value, DBNull.Value, float.Epsilon, int.MinValue и пр. - это как бы служебные константы, предназначенные для операций сравнения и ни для чего более; кроме того, в рамках одного класса их может быть несколько (int.MaxValue). Класс-синглтон говорит окружающему миру: есть только 1 экземпляр объекта, и предоставляет доступ к этому экземпляру через (обычно) статическое свойство или метод. |
| Автор: Exception 30.10.2005, 10:35 |
| ну да. но помню - был такой, а кто именно не помню.. |
| Автор: arilou 31.10.2005, 12:35 | ||||||
А смысл? Ведь все равно к св-ву Instance без создания объекта не обратишься. Мое имхо, через интерфейсы это нереализуемо. Можно сделать на шаблонах (.NET 2.0), что-то вроде
Ну и юзаем так:
Недостаток этого подхода в том, что нельзя у класса T (MySingletonClass в примере) объявить не-public конструктор, иначе where T: new не будет работать. А вообще - зачем все это? |
| Автор: Мурлыкатам_ 21.11.2008, 16:53 |
| Типа паттерн проектирования |
| Автор: Partizan 21.11.2008, 17:19 |
| Мурлыкатам_, некрофилия - не хорошо |
| Автор: QryStaL 21.11.2008, 17:30 |
| |
| Автор: Partizan 21.11.2008, 17:33 |
| QryStaL, ну давайте я захочу 2000 набрать и щас ещё 500 топиков из бездны подниму |