我正在编写一个rest框架,我有一个实体条目验证器,我想在上下文级别的保存更改时对其进行验证。
我正在寻找一种获取在编译时就可以知道的属性信息的快速方法。
我正在像现在这样获取物业信息。
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容器中创建一个地图,以根据例如类型
获取properyInfopublic interface IPropertyTypeMapContainer
{
void RegisterType(Type type);
PropertyInfo GetInfoByName(Type type, string propertyName);
}
但是我不喜欢这样,因为我发现自己写了一些微缓存来解决类似的问题。
是否有更标准化的方式来缓存和获取PropertyInfo
?