Masowa rejestracja encji | Ilaro.Admin
Gdy mamy dużo modeli i chcielibyśmy podejrzeć dla każdego nich domyslny panel administracyjny dobrym pomysłem będzie użyć masowej rejestracji encji z danego assembly.
Tworząc API do rejestracji, wzorowałem się na API Autofaca.
Rejestracja encji w assembly:
1 2 |
Admin.AssemblyEntities(typeof(Customer).Assembly) .Register(); |
API pozwala także na filtrowanie typów:
1 2 3 |
Admin.AssemblyEntities(typeof(Customer).Assembly) .Where(type => typ.Name.EndsWith("Entity")) .Register(); |
Dodałem kilka rozszerzeń, dla najprawdopodobniej najczęstszych przypadków użycia.
Encje w danym namespace:
1 2 3 4 5 6 7 |
Admin.AssemblyEntities(typeof(Customer).Assembly) .InNamespace("SampleProject.Models") .Register(); Admin.AssemblyEntities(typeof(Customer).Assembly) .InNamespaceOf<User>() .Register(); |
Wykluczanie typów encji:
1 2 3 |
Admin.AssemblyEntities(typeof(Customer).Assembly) .Except<User>() .Register(); |
Można także napisać swoje własne rozszerzenia, np. gdy chcemy zarejestrować wszystkie encje dziedziczące po konkretnym typie.
1 2 3 4 |
public static RegistrationBuilder DerivedFrom<T>(this RegistrationBuilder builder) { return builder.Where(type => type.IsSubclassOf(typeof(T))); } |
Użyjemy tego w taki sposób:
1 2 3 |
Admin.AssemblyEntities(typeof(Customer).Assembly) .DerivedFrom<Entity>() .Register(); |
W podobny sposób będą rejestrowane obiekty konfiguratorów dla encji, które to są w trakcie tworzenia.
[…] Rejestracja konfiguratorów korzysta z tego samego API co masowa rejestracja encji. […]