Я пишу структуру отдыха, у меня есть валидатор для записей сущностей, которые я хотел бы проверить при сохранении изменений на уровне контекста.
Я ищу быстрый способ получения свойстваинформация, которая будет известна во время компиляции.
Я получаю информацию о свойствах, как в настоящее время.
var propertyInfo = typeof(ConversationSubscription)
.GetProperty(nameof(ConversationSubscription.IsSubscribed));
this.RuleFor(x => x.Entity<ConversationSubscription>().IsSubscribed)
.Must(this.BeSubscriber)
.When(x => ValidatorByStateExtensions.Was(x, propertyInfo, x.EntityEntryManager));
Конечно, большинство моего валидатора не имеют состояния, поэтому их можно зарегистрировать как одиночные, что позволит избежать проблемы, однако некоторые из моих валидаторов - нет.
Я мог бы создать карту в контейнере DI, чтобы получить правильную информацию на основе типа, например
public interface IPropertyTypeMapContainer
{
void RegisterType(Type type);
PropertyInfo GetInfoByName(Type type, string propertyName);
}
Но мне это не нравится, потому что я пишу несколько микро-кешейДля решения подобных проблем.
Есть более стандартизированный способ кеширования и получения PropertyInfo
?