powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как вызвать статический метод из другого контроллера?
29 сообщений из 29, показаны все 2 страниц
Как вызвать статический метод из другого контроллера?
    #37720085
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернее, как вызвать то, понятно... проблема в том, что в методе используется статическое поле этого самого класса-контроллера - хозяина вызываемого метода... и поле получает данные в конструкторе... если класс ранее не вызывался, то получаю поле - Null, а мне нужны его данные....
Подскажите - плиииз... где я чего то не догоняю... как активировать конструктор поля????
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720137
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. вынести инициализацию в другой метод, в геттере этого полу проверять - если нулл, то инициировать
2. вы делаете какое-то зло, на мой взгляд. зачем вам статическое поле другого контроллера которое, к тому же, инициируется в конструкторе! Это же изврат получается
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720149
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS дело говорит. За статику в контроллерах нужно руки отрывать.
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720155
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗЛОООО..... данувымне льстите...
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720171
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том что на каждом соответствующем контроллере висит свой репозиторий... и что бы из какого либо контроллера получить данные соседней сущности надо либо... объявлять репозиторий той сущности в этом контроллере, ли бо как я хочу...
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720176
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не поиму, чем в этом случае плох метод??? он сделал свое дело, принес данные и отвалил....
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37720236
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var repository = ServiceLocator.Resolve<IPersonRepository>();
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720311
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ
Код: c#
1.
var repository = ServiceLocator.Resolve<IPersonRepository>();



Это я так понимаю IoC контейнер??? Но у меня уже стоит... другой... проблема не в этом
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720317
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я же говорю..., чтобы не открывать по 5-10... 100 интерфейсов в контроллере я пытаюсь наладить сообщения между контроллерами через статические методы, не возвращающие (кстати) действие...
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37720327
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex RubyЭто я так понимаю IoC контейнер???
Да.
Alex RubyНо у меня уже стоит... другой... проблема не в этом
А в чем проблема?
Alex RubyЯ же говорю..., чтобы не открывать по 5-10... 100 интерфейсов в контроллере я пытаюсь наладить сообщения между контроллерами через статические методы, не возвращающие (кстати) действие...
1. Что такое "открывать по 100 интерфейсов в контроллере"?
2. Какое сообщение, контроллер 1 ничего не должен знать о контроллере 2.
3. Если речь о наследовании логики, - кто мешает создать базовый контроллер, а остальные контроллеры по-человечески наследовать об базового?
4. У Вас каша в башке, вот и мечитесь из огня да в полымя со своими статиками. Статику на свалку.
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37720350
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавнокоду место на свалке.
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37720365
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУГавнокоду место на свалке.

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

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


Логика мне не нужна... только данные
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37720814
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Буду справедлив... Помогли... пнули в нужном направлении....
Книжка Сандерсона..., не самого глупого на мой взляд мастера
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37721293
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отлично... что Вы вспомнили о потоках.... давайте ущё вспомним и о ControllerFactory.... не он ли делает уникальным каждый поток для класса...
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721300
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Rubyне он ли делает уникальным каждый поток для класса...
Сам-то понял, что ляпнул?
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721442
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отдельный класс для каждого потока
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721463
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отдельный мозг для каждого человека.
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721567
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Ruby, в твоем случае экземпляр статической переменной доступен во всех контекстах обработки конкретного контроллера!!!
Поясняю:
1. n пользователей одновременно запрашивают одну страничку (то что реально не одновременно не объясняем?)
2. т.к. ты инициализируешь статику в конструкторе - при каждом запросе она будет переинициализироваться
3. ввиду этого возможны нарушения обработки у других пользователей (а казалось бы - с какого хуйа, да?) и даже текущего пользователя, более того - какой-то пользователь получит нулреферн эксепшн, если статика убивается, или инфу о том что сущности ORM не привязаны к контексту или контекс изменился и прочие волшебные штуки (чего только не бывало, но в данной ситуации даже предположить что нить еще не могу)

посмотри первую ссылку
+ рекомендую хотя бы по 20 страниц в день почитать вот это или аналогичное (т.е. гугли, на торренты ссылки не дам, уж ссори)
важно не только знать ключевые слова языка, нужно немного понимать как работает приложение изнутри (иной раз задумываться как отреагирует компилятор)
также почитай про паттерны проектирования, там много полезных вещей
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #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
Как вызвать статический метод из другого контроллера?
    #37721717
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж так хочется статику, не вопрос - только делать это надо по-человечески, а не через жопу. Да, Alex Ruby?

Implementing Singleton in C#

Multithreaded Singleton
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public sealed class Singleton
{
   private static volatile Singleton instance;
   private static object syncRoot = new Object();

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null) 
         {
            lock (syncRoot)
            {
               if (instance == null) 
                  instance = new Singleton();
            }
         }

         return instance;
      }
   }
}

...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721731
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Данила, почитай свои сообщения в топике. Давай поаккуратнее со своим фирменным стилем. Не все привыкли.
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37721781
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, Серж :)
...
Рейтинг: 0 / 0
Как вызвать статический метод из другого контроллера?
    #37750855
Alex Ruby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to MCY

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


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