Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как вызвать статический метод из другого контроллера? / 25 сообщений из 29, страница 1 из 2
23.03.2012, 14:23
    #37720085
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Вернее, как вызвать то, понятно... проблема в том, что в методе используется статическое поле этого самого класса-контроллера - хозяина вызываемого метода... и поле получает данные в конструкторе... если класс ранее не вызывался, то получаю поле - Null, а мне нужны его данные....
Подскажите - плиииз... где я чего то не догоняю... как активировать конструктор поля????
...
Рейтинг: 0 / 0
23.03.2012, 14:39
    #37720137
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
1. вынести инициализацию в другой метод, в геттере этого полу проверять - если нулл, то инициировать
2. вы делаете какое-то зло, на мой взгляд. зачем вам статическое поле другого контроллера которое, к тому же, инициируется в конструкторе! Это же изврат получается
...
Рейтинг: 0 / 0
23.03.2012, 14:44
    #37720149
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
SanSYS дело говорит. За статику в контроллерах нужно руки отрывать.
...
Рейтинг: 0 / 0
23.03.2012, 14:47
    #37720155
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
ЗЛОООО..... данувымне льстите...
...
Рейтинг: 0 / 0
23.03.2012, 14:50
    #37720171
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Дело в том что на каждом соответствующем контроллере висит свой репозиторий... и что бы из какого либо контроллера получить данные соседней сущности надо либо... объявлять репозиторий той сущности в этом контроллере, ли бо как я хочу...
...
Рейтинг: 0 / 0
23.03.2012, 14:52
    #37720176
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Не поиму, чем в этом случае плох метод??? он сделал свое дело, принес данные и отвалил....
...
Рейтинг: 0 / 0
23.03.2012, 15:20
    #37720233
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex RubyДело в том что на каждом соответствующем контроллере висит свой репозиторий... и что бы из какого либо контроллера получить данные соседней сущности надо либо... объявлять репозиторий той сущности в этом контроллере, ли бо как я хочу...
А зачем статика?

Service locator pattern

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public class PersonController
{
    public Person Find(int Id)
    {
        var repository = ServiceLocator.Resolve<PersonRepository>();
        return ...;
     }
}
...
Рейтинг: 0 / 0
23.03.2012, 15:21
    #37720236
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Код: c#
1.
var repository = ServiceLocator.Resolve<IPersonRepository>();
...
Рейтинг: 0 / 0
23.03.2012, 15:53
    #37720311
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
МСУ
Код: c#
1.
var repository = ServiceLocator.Resolve<IPersonRepository>();



Это я так понимаю IoC контейнер??? Но у меня уже стоит... другой... проблема не в этом
...
Рейтинг: 0 / 0
23.03.2012, 15:56
    #37720317
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Я же говорю..., чтобы не открывать по 5-10... 100 интерфейсов в контроллере я пытаюсь наладить сообщения между контроллерами через статические методы, не возвращающие (кстати) действие...
...
Рейтинг: 0 / 0
23.03.2012, 16:01
    #37720327
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex RubyЭто я так понимаю IoC контейнер???
Да.
Alex RubyНо у меня уже стоит... другой... проблема не в этом
А в чем проблема?
Alex RubyЯ же говорю..., чтобы не открывать по 5-10... 100 интерфейсов в контроллере я пытаюсь наладить сообщения между контроллерами через статические методы, не возвращающие (кстати) действие...
1. Что такое "открывать по 100 интерфейсов в контроллере"?
2. Какое сообщение, контроллер 1 ничего не должен знать о контроллере 2.
3. Если речь о наследовании логики, - кто мешает создать базовый контроллер, а остальные контроллеры по-человечески наследовать об базового?
4. У Вас каша в башке, вот и мечитесь из огня да в полымя со своими статиками. Статику на свалку.
...
Рейтинг: 0 / 0
23.03.2012, 16:06
    #37720341
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class InvoiceController :Controller
    {
        private static ICustomerRepository repository;
        public InvoiceController(ICustomerRepository customerRepository)
        {
            repository = customerRepository;
        }
...
Рейтинг: 0 / 0
23.03.2012, 16:10
    #37720350
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Гавнокоду место на свалке.
...
Рейтинг: 0 / 0
23.03.2012, 16:11
    #37720353
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class WatchListController : Controller
    {
        private IWatchListRepository repository;
        private ICustomerRepository custrepo;
        public WatchListController(IWatchListRepository watchRepository, ICustomerRepository customerRepository)
        {
            repository = watchRepository;
            custrepo = customerRepository;
        }



и так сколько будет максимум... даже боюсь представить
...
Рейтинг: 0 / 0
23.03.2012, 16:17
    #37720365
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
МСУГавнокоду место на свалке.

У Вас, уважаемый, все 18 000 мессав гро "гавно"???
...
Рейтинг: 0 / 0
23.03.2012, 16:19
    #37720368
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
МСУAlex RubyЭто я так понимаю IoC контейнер???

3. Если речь о наследовании логики, - кто мешает создать базовый контроллер, а остальные контроллеры по-человечески наследовать об базового?


Логика мне не нужна... только данные
...
Рейтинг: 0 / 0
23.03.2012, 16:45
    #37720424
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex Ruby
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class InvoiceController :Controller
    {
        private static ICustomerRepository repository;
        public InvoiceController(ICustomerRepository customerRepository)
        {
            repository = customerRepository;
        }


А.. узнаю подход, в книжке по MVC какой-то видел, там же IoC описывался
выкиньте этот код, сделайте как говорит МСУ - вынести эту логику в базовый класс и не делайте репозитори статичным
...
Рейтинг: 0 / 0
23.03.2012, 21:07
    #37720814
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Буду справедлив... Помогли... пнули в нужном направлении....
Книжка Сандерсона..., не самого глупого на мой взляд мастера
...
Рейтинг: 0 / 0
23.03.2012, 23:04
    #37720916
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex RubyБуду справедлив... Помогли... пнули в нужном направлении....
Книжка Сандерсона..., не самого глупого на мой взляд мастера
У Сандерсона не стояла задача научить правильно писать код, у него была задача научить неокрепший ум основам ASP.NET MVC.
Статика в прикладном бизнес-коде - зло. ASP.NET многопоточен, следовательно нужно понимать и знать - как работает статика и чем она может обернуться в итоге.

http://msdn.microsoft.com/ru-ru/library/6sby1byh.aspx Следует учитывать, что любой код конструктора класса будет работать с первым потоком в первом контексте, получающим доступ к полю.Поля во всех других потоках и во всех других контекстах в пределах того же домена приложения будут инициализированы значением null (Nothing в Visual Basic), если они имеют ссылочные типы, или значениями по умолчанию, если они имеют типы значения. Поэтому не следует полагаться на инициализацию статических полей потока конструкторами классов.Напротив, следует избегать инициализации статических полей потока и предполагать, что они инициализированы значениями null (Nothing) или значениями по умолчанию .

Статика плоха так и в модульном тестировании, никакой слабосвязанности, моки идут лесом и т.д. Если у тебя, чудо ты неверующее, не хватает мозгов понять эти простые прописные истины - читай дальше своего Сандерсона. В сад. + RTFM.
...
Рейтинг: 0 / 0
24.03.2012, 14:22
    #37721293
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Отлично... что Вы вспомнили о потоках.... давайте ущё вспомним и о ControllerFactory.... не он ли делает уникальным каждый поток для класса...
...
Рейтинг: 0 / 0
24.03.2012, 14:34
    #37721300
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex Rubyне он ли делает уникальным каждый поток для класса...
Сам-то понял, что ляпнул?
...
Рейтинг: 0 / 0
24.03.2012, 17:31
    #37721442
Alex Ruby
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Отдельный класс для каждого потока
...
Рейтинг: 0 / 0
24.03.2012, 18:49
    #37721463
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Отдельный мозг для каждого человека.
...
Рейтинг: 0 / 0
24.03.2012, 22:17
    #37721567
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex Ruby, в твоем случае экземпляр статической переменной доступен во всех контекстах обработки конкретного контроллера!!!
Поясняю:
1. n пользователей одновременно запрашивают одну страничку (то что реально не одновременно не объясняем?)
2. т.к. ты инициализируешь статику в конструкторе - при каждом запросе она будет переинициализироваться
3. ввиду этого возможны нарушения обработки у других пользователей (а казалось бы - с какого хуйа, да?) и даже текущего пользователя, более того - какой-то пользователь получит нулреферн эксепшн, если статика убивается, или инфу о том что сущности ORM не привязаны к контексту или контекс изменился и прочие волшебные штуки (чего только не бывало, но в данной ситуации даже предположить что нить еще не могу)

посмотри первую ссылку
+ рекомендую хотя бы по 20 страниц в день почитать вот это или аналогичное (т.е. гугли, на торренты ссылки не дам, уж ссори)
важно не только знать ключевые слова языка, нужно немного понимать как работает приложение изнутри (иной раз задумываться как отреагирует компилятор)
также почитай про паттерны проектирования, там много полезных вещей
...
Рейтинг: 0 / 0
24.03.2012, 22:31
    #37721579
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать статический метод из другого контроллера?
Alex RubyОтлично... что Вы вспомнили о потоках.... давайте ущё вспомним и о ControllerFactory.... не он ли делает уникальным каждый поток для класса...
1. оффтоп - к чему столько многоточий? :)
2. плохо что вы вспомнили о ControllerFactory, т.к. вы сделали какое-то хитрожопое умозаключение или попросту - сказал как в лужу пернул
http://msdn.microsoft.com/ru-ru/library/system.web.mvc.icontrollerfactory.aspx
Defines the methods that are required for a controller factory.

скажу по секрету - ASP.NET MVC я знаю плохо (очень)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как вызвать статический метод из другого контроллера? / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]