Nie, wbudowany pojemnik DI/IoC jest celowo przechowywany w prosty sposób zarówno pod względem użytkowania, jak i funkcji, aby zapewnić podstawę dla innych pojemników DI do podłączenia.
Nie ma więc wbudowanej obsługi: Auto-Discovery, Auto-rejestracje, Dekoratory lub wtryskiwacze lub rejestracje oparte na konwencjach. Nie ma też planów, aby dodać to do wbudowanego kontenera, ale z tego, co wiem.
Będziesz musiał użyć kontenera zewnętrznego z obsługą wtrysku nieruchomości.
Należy zauważyć, że wstrzyknięcie właściwości jest uważane za złe w 98% wszystkich scenariuszy, ponieważ ukrywa zależności i nie ma gwarancji, że obiekt zostanie wstrzyknięty podczas tworzenia klasy.
Za pomocą wstrzyknięcia konstruktora można wymusić to za pomocą konstruktora i sprawdzić wartość zerową, a nie tworzyć wystąpienie klasy. Przy wtrysku własności jest to niemożliwe, a podczas testów jednostkowych nie jest oczywiste, które usługi/zależności klasy wymaga, gdy nie są zdefiniowane w konstruktorze, tak łatwo można je przegapić i uzyskać NullReferenceExceptions
.
Jedynym uzasadnionym powodem, dla którego wehikuł Property Injection kiedykolwiek znalazłem, było wstrzyknięcie usług do klas proxy wygenerowanych przez bibliotekę strony trzeciej, tj. Proxy WCF utworzone z interfejsu, w którym nie masz kontroli nad tworzeniem obiektu.
Unikaj tego wszędzie indziej niż.
Powiązane: https://stackoverflow.com/questions/39849142/when-to-use-property- injection – Steven