Быстро получить информацию о свойстве, когда свойство известно во время компиляции - PullRequest
0 голосов
/ 04 января 2019

Я пишу структуру отдыха, у меня есть валидатор для записей сущностей, которые я хотел бы проверить при сохранении изменений на уровне контекста.

Я ищу быстрый способ получения свойстваинформация, которая будет известна во время компиляции.

Я получаю информацию о свойствах, как в настоящее время.

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?

...