|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
Привет. Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему? Честно говоря, понятно почему. Не доделано. DI подключается и создает инстансы только во время рендерения компонента (компонент здесь и далее просто .razor класс). Раз мой бизнес класс не рендерится, то не жди и инжекта при обьявлении типа Код: c# 1. 2.
Вопрос: как заставить Блэзор инжектировать в мой бизнес класс Код: c# 1. 2. 3. 4.
Что я делаю сейчас, инжектирую тот же DALClass в компонент (можно. Компонент рендерится), а потом начинаю его пропагировать по моим бизнесс классам типа Код: c# 1.
Чот не то. ПОшло. Как это сделать получше? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 21:32 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
А зачем ты в в обычном классе используешь [Inject]? Он как бы совсем не для этого. Он вообще ни для чего. Если тебе надо заинжектить сервис в обычный класс - используй обычный constructor injection, если в разоровский компонент, то используй стандартную директиву @inject. А этот аттрибут он, по сути, для внутреннего использования - компилятор разора метит им свойства которые объявлены через @inject. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 22:13 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
fkthat, >используй обычный constructor injection Я не знаком с техникой этого дела. Мой код в .razor @code { MyClass m = new MyClass(); } И вот в MyClass надо передать DALClass из DI контейнера (он там скоупед и создавать новый инстанс мне не надо) Если я обьявляю параметризованный конструктор типа public class MyClass { public MyClass(DALClass dal) { } } то MyClass m = new MyClass(); в разоре не прокатит. Значит я должен в разоре иметь инстанс DALClass и передавать его в конструктор. Но я хочу, чтоб DI инжектировал DALClass Scope, а не его куда-там провайдил. Иначе возникает каскад таких передач в другие классы ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 22:36 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
Renziglov Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 22:37 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
Renziglov, тебе в разоре надо написать вверху Код: c# 1.
а в классе MyClass объявить конструктор Код: c# 1. 2. 3. 4. 5. 6.
И, конечно, все это зарегистрировать в DI-контейнере на старте приложения: Код: c# 1. 2.
А еще, если ты используешь DI, то лучше сразу отделять интерфейсы от реализации и инжектить интерфейсы, а не классы. Код: c# 1.
Код: c# 1. 2. 3. 4. 5. 6.
Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 22:48 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
Shocker.Pro, Не-не. Пробовал и паблик. Та же фигня. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 23:02 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
Тут нифига непонятно, что у тебя из этого всего компонент, короче сделай как показал fkthat Renziglov Раз мой бизнес класс не рендерится, то не жди и инжекта при обьявлении типа Ты должен свой бизнес-класс извлекать из DI. Забудь про new ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2020, 23:10 |
|
Blazor [Inject] работает по-разному в коде компонента и в коде бизнесс-класса. Почему?
|
|||
---|---|---|---|
#18+
И еще, кстати, момент https://ru.wikipedia.org/wiki/DTO Data Transfer Object (DTO) — один из шаблонов проектирования, используется для передачи данных между подсистемами приложения. Data Transfer Object, в отличие от business object или data access object не должен содержать какого-либо поведения . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2020, 00:23 |
|
|
start [/forum/topic.php?fid=18&fpage=6&tid=1354658]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 422ms |
0 / 0 |