powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
25 сообщений из 177, страница 3 из 8
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783927
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИбо если, тебе вдруг в контроллере надо будет вызвать несколько действий сервисов (т.е. это уже означает, что у контроллеров есть логика АПИ), то уже ToActionResult тут не обойдёшься, так как тебе нужно каскадно проверить все результаты.
Да не обойдёшься, но в итоге будет ToActionResult, при чём не важно на каком их нескольких действий сервисов прервётся цепочка.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783928
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Хотелось бы увидеть какие-то конкретные и конструктивные примеры.
Какие именно функции контроллера перенесены в сервис? В чём конкретно отход от ООП?

Хз насчёт ООП, я об этом не заикался. Я говорю о конкретных приведённых примерах.
В частности о волшебном расширении ToActionResult. Нет, это не выглядит "круто, удобно, тестируемо,бла-бла-бла". Это выглядит глупо.
Что конкретно глупо? Можешь быть конструктивным, а не бла-бла-бла? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783932
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухНа мой взгляд намечается очередной бессмысленный и беспощадный спор.

Спор не о том, хорошо или плохо OperationResult.
Не вижу конструктивной критики.
То есть когда не тупо говорят: "Это выглядит глупо".
А аргументируют, почему на их взгляд это выглядит глупо, и предлагают свой вариант решения, который нивелирует проблемы предложенного мною.

А раз нет конструктива, то для меня это очередной бессмысленный и беспощадный спор.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783935
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

А, это вы про что-то своё.
-----
Разумеется.


тут при чём?
-----
Так это... тяпница же... да еще и 8-е... и конец рабочего дня...

А долбанная XmlSchema все еще не компилируется...
Только-только начала собираться из кусков... надо "циркулар референце" победить​...
А в предлагаемых решениях - только ручное исправление схем и такая же ручная сборка результатов...

Нее, без стакана не разобраться... и OperationResult не поможет...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783937
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCat,

Д​а, не понятно написал... устал уже...
В общем - надо мне схему забросить на сервис и на сервисе она должна компилироваться во что-то что сможет десериализовать соответствующий схеме ХМЛ.
Мне без разницы какой именно будет ответ от сервиса - сервису в любом случае надо построить хранилище по переданной схеме.
Ну а у мелкомягких как всегда нихрена не пашет - циркулар референце - да, она там есть - и надо ее победить...
Как-то так... устал...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783938
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще это всё шаг в торону так называемого Railway oriented programming.
И когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.
А можно и забить, чтобы в "ФП головного мозга" не обвиняли
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783939
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PinkCatКак-то так... устал...
Обычно в этом случае перерыв и отдых помогает. Утро вечера мудренее.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783944
PinkCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Обычно в этом случае перерыв и отдых помогает.
-----
Да, только у меня он называется retirement... пора, скоро...
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39783947
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А для упоротых курс Applying Functional Principles in C# от Microsoft MVP.

You will see how to make parts of the domain model immutable, how to refactor away from using exceptions to control the program flow, get rid of primitive obsession, deal with nulls, and apply railway-oriented programming.
You will also see how to save your domain model to a data store, namely how to convert value objects into primitives and Maybe type instances to nulls when you do that.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39784867
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WaspNewCore,

ты судя по всему думаешь как сделать WebApi контроллеры?
может подойдет тебе вот такой интерфейс для твоего ответа IHttpActionResult - возвращай объект, реализующий этот интерфейс
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39784881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU,
Для этого ссылка на интерфейс XXXX-HTTP-XXXXдолжна быть в слое сервисном и бизнес логике.
Оно там надо?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785167
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrUWaspNewCore,

ты судя по всему думаешь как сделать WebApi контроллеры?
может подойдет тебе вот такой интерфейс для твоего ответа IHttpActionResult - возвращай объект, реализующий этот интерфейс
Вообще-то в заголовке написано ASP.NET Core, а IHttpActionResult относится к System.Web.Http.

Да и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785328
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА аргументируют, почему на их взгляд это выглядит глупо, и предлагают свой вариант решения, который нивелирует проблемы предложенного мною.

Дублирование это в большинстве случаев глупо.
Использовать функционал фреймворка не по назначению в большинстве случаев глупо.

Какие ещё аргументы нужны?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785329
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухИ когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.

Серьёзно? Сначала оверинженирим, затем выдумываем как это обойти ))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785332
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухА можно и забить, чтобы в "ФП головного мозга" не обвиняли


Между "эффективное решение" и "ФП-решение" многие ставят знак тройного равенства.
Это ни что иное, как ФП головного мозга, сорян )
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785334
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухДа и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)

Если ты полностью дублируешь функционал IActionResult, то в чём ущербность идеи? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785367
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухИ когда "вдруг в контроллере надо будет вызвать несколько действий сервисов", то легко можно будет к этому прийти.

Серьёзно? Сначала оверинженирим, затем выдумываем как это обойти ))
Выдумываем как обойти что? Давай конкретный пример уже :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785369
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДмитрий МухДа и тащить зависимость от System.Web, или от Microsoft.AspNetCore.Mvc в слой бизнес-логики - та ещё идея :)

Если ты полностью дублируешь функционал IActionResult, то в чём ущербность идеи? :)
IActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

У него туева хуча наследников, где ты увидел полное их дублирование? :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785374
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВыдумываем как обойти что? Давай конкретный пример уже :)

Несколько твоих OperationResult, которые уже не какие-то там Success(true/false), а целый фарш из HTTP-like статусов.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785377
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAIActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

Интерфейс это контракт для реализации функционала.
OperationResult чем отличается от IActionResult, если он у тебя Http-like и поэтому так просто траснлируется в IActionResult?


skyANAУ него туева хуча наследников, где ты увидел полное их дублирование? :)

Дублирование функционала.

Я ещё понимаю, откуда могут ноги расти. Ты просто получаешь данные из другого REST-сервиса, полученный ответ мапится в OeprationResult, а потом также в обратку -- в IActionResult.
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785380
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAВыдумываем как обойти что? Давай конкретный пример уже :)

Несколько твоих OperationResult, которые уже не какие-то там Success(true/false), а целый фарш из HTTP-like статусов.
Где ты увидел несколько OperationResult? В топике ровно один такой класс.
И нет там HTTP-like статусов. То что множество A однозначно отображается на B не значит, что A есть B-like :)
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785385
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAIActionResult - это во первых интерфейс.
Какой такой его функционал и кто полностью дублирует?

Интерфейс это контракт для реализации функционала.
OperationResult чем отличается от IActionResult, если он у тебя Http-like и поэтому так просто траснлируется в IActionResult?
Где ты увидел в IActionResult сл. свойства:

Код: 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.
25.
    /// <summary>
    /// If Success is false and an exception has been caught internally, this field will contain the exception.
    /// </summary>
    public Exception Exception { get; private set; }

    /// <summary>
    /// Returns message if the operation was not successful.
    /// </summary>
    public string Message { get; private set; }

    /// <summary>
    /// The status for the operation.
    /// </summary>
    public Status Status { get; private set; }

    /// <summary>
    /// Returns true if the operation was successful.
    /// </summary>
    /// <remarks>If Success is false, use the Exception property to help determine the reason.</remarks>
    public bool Success { get; private set; }

    /// <summary>
    /// The result obtained during the operation.
    /// </summary>
    public TValue Value { get; private set; }


...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785387
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAУ него туева хуча наследников, где ты увидел полное их дублирование? :)

Дублирование функционала.
Покажи мне тот кусок кода, где дублируется какой-то функционал?
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785463
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAГде ты увидел в IActionResult сл. свойства:

Вот здесь:

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
public enum OperationStatus
{
    /// <summary>
    /// Indicates that the status has not been set.
    /// </summary>
    Undefined = 0,

    /// <summary>
    /// The operation was successful.
    /// </summary>
    Success,

    /// <summary>
    /// The requested resource does not exist.
    /// </summary>
    NotFound,

    /// <summary>
    /// The operation is not allowed.
    /// </summary>
    NotAllowed,

    /// <summary>
    /// The operation is not supported at the moment.
    /// </summary>
    NotSupported,

    /// <summary>
    /// The operation is not valid (for example it contains an inconsistent data).
    /// </summary>
    NotValid,

    /// <summary>
    /// An internal error has occured.
    /// </summary>
    InternalError
}



а вот один из базовых классов реализации IActionResult

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
public class ObjectResult : ActionResult, IStatusCodeActionResult, IActionResult
  {
    private MediaTypeCollection _contentTypes;

    public ObjectResult(object value)
    {
      this.Value = value;
      this.Formatters = new FormatterCollection<IOutputFormatter>();
      this._contentTypes = new MediaTypeCollection();
    }

    [ActionResultObjectValue]
    public object Value { get; set; }

    public FormatterCollection<IOutputFormatter> Formatters { get; set; }

    public MediaTypeCollection ContentTypes
    {
      get
      {
        return this._contentTypes;
      }
      set
      {
        MediaTypeCollection mediaTypeCollection = value;
        if (mediaTypeCollection == null)
          throw new ArgumentNullException(nameof (value));
        this._contentTypes = mediaTypeCollection;
      }
    }

    public Type DeclaredType { get; set; }

    /// <summary>Gets or sets the HTTP status code.</summary>
    public int? StatusCode { get; set; }

    public override Task ExecuteResultAsync(ActionContext context)
    {
      return context.HttpContext.RequestServices.GetRequiredService<IActionResultExecutor<ObjectResult>>().ExecuteAsync(context, this);
    }

    /// <summary>
    /// This method is called before the formatter writes to the output stream.
    /// </summary>
    public virtual void OnFormatting(ActionContext context)
    {
      if (context == null)
        throw new ArgumentNullException(nameof (context));
      if (!this.StatusCode.HasValue)
        return;
      context.HttpContext.Response.StatusCode = this.StatusCode.Value;
      if (!(this.Value is ProblemDetails problemDetails) || problemDetails.Status.HasValue)
        return;
      problemDetails.Status = new int?(this.StatusCode.Value);
    }
  }



Ну скажи мне, что ObjectResult.StatusCode и OperationResult.Status суть разные вещи, давай

Почему я говорю про IActionResult? Добавь реализацию интерфейса IActionResult в OperationResult, и тебе даже не понадобится метод расширения ToActionResult.

Оверинжиниринг ин экшен. Можно сделать GetSomeResult().ToActionResult() -- как няшно и ФП-шно )))
...
Рейтинг: 0 / 0
AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
    #39785477
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Дали дураку хрустальный х...й" (с) Встроили в Core DI из коробки - ждем теперь массовой инжекции клиентского JavaScript в базу данных и тому подобного.
...
Рейтинг: 0 / 0
25 сообщений из 177, страница 3 из 8
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / AspNet Core. Как заинжектить текущий контроллер в класс-сервис ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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