Получить свойство View Model из службы с использованием внедрения зависимостей - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть viewmodel следующим образом

public VMTest
{
  [RequiredIf("depdendentproperty", "1")]
  public int property1 {get;set;}
  public int depdendentproperty 
  {
    get 
    {
        return IMyservice.GetData(property1);
    }

  }
}

Я хочу вызвать метод Myservice через внедрение зависимостей. но для этого мне нужно добавить перегруженный конструктор для viewmodel, который кажется неправильным. Мой запрос заключается в том, как получить значение свойства viewmdel из службы с или без внедрения зависимости. Единственное решение - добавить конструктор по умолчанию в службу и вызвать метод службы напрямую. Пожалуйста, предложите

На самом деле мое требование - реализовать его с помощью метода get. Чтобы уточнить, я применяю атрибут RequiredIf на property1. всякий раз, когда свойство1 проверяется, оно зависит от зависимого свойства

1 Ответ

0 голосов
/ 02 ноября 2019

Вы нарушаете парадигму того, что должен ViewModel делать. Вы можете подготовить его как минимум на Controller или Method в вашем сервисе, который возвращает ViewModel.

Добавьте пространство имен:

using Microsoft.Extensions.DependencyInjection;

И попробуйте что-то вроде этого примера метода действия:

public IActionResult GetData()
{
    var service = this.HttpContext.RequestServices.GetService<IMyservice>();
    var property1Value = 1;
    var result = new VMTest()
    {
       property1 = property1Value ,
       dependentyProperty = service.GetData(property1Value )
    };

    return View(result);
}

В области видимости контроллера вы можете получить доступ к HttpContext.RequestServices свойство, представляющее собственный контейнер IoC в .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...