2017-01-07 5 views
0

Я создаю приложение MVC, и у меня есть интерфейс и производный класс, реализующий интерфейс, и DI, соединяющий их вместе. Функционал в производном классе отлично работает во всем коде, вызывающем его в коде контроллера или модели, но теперь я нашел экземпляр объекта View I, который также выиграл бы от использования этого производного класса. Но потом я узнал, что это невозможно, потому что производный класс нестатический, и использование его в представлении требует, чтобы оно было статичным. Итак, я попытался сделать интерфейс и производный класс статичным, но тогда обнаруженные интерфейсы не могут иметь статических обозначений, а производный класс, связанный с интерфейсом, не может использовать статический ни один, так как интерфейс не использует статический. Я даже пытался создать помощник бритвы, но даже тогда, так как созданный мной бритвенный помощник был статичным (который, как мне кажется, я должен знать, должен быть статичным для правильной работы), использование производного класса там также имеет та же статическая/нестатическая проблема. Я попытался найти другие вопросы в stackoverflow, которые могли бы указать мне в правильном направлении, но из того, что я видел, мне не повезло, поэтому я задаю этот вопрос здесь, надеюсь, кто-то может мне помочь, это было бы очень признательно. Если на моей стороне требуется больше информации, чтобы помочь вам помочь, например, некоторые из моего кода, просто спросите.Интерфейсы DI и производные классы в Razor View (нестатические классы)

+0

Вы можете использовать слово инъекции, но только с aspnet mvc 6/core. В противном случае вы должны отправить результат своего интерфейса с вашего контроллера на ваш взгляд через модель. – Kalten

+0

Я просто подумал о вашем предположении, и, во-первых, я использую mvc 5. И я на самом деле планирую научиться использовать mvc 6/core как можно скорее, но не сейчас. Итак, в настоящее время я застрял в mvc 5. И, на самом деле, когда дело доходит до вашего предложения в случае с mvc 5, я действительно рассмотрел эту идею до вашего предложения. Дело в том, как я намерен реализовать производный класс в представлении, в зависимости от итераций в цикле for, и предполагал, что может не иметь смысла предоставлять класс через модель. Но, теперь, когда я думаю об этом, это может сработать, я попробую это – AspCoder

+0

... завтра, и если это сработает, я дам вам знать, иначе, если у меня появятся другие проблемы, я попрошу вас , или кто-либо другой, который предоставляет любые другие предложения для дальнейшей помощи. – AspCoder

ответ

1

Вы можете использовать ключевое слово для инъекций, но только с aspnet mvc 6/core. См. AspNet core docs.

Синтаксис @Inject: @inject <type> <variable_name>

В верхней части файла cshtml, добавьте:

@inject StatisticsService StatsService 

В противном случае вы должны отправить результат своего интерфейса с контроллера на ваш взгляд через модель ,

 Смежные вопросы

  • Нет связанных вопросов^_^