在编译时知道属性时快速检索属性信息

时间:2019-01-04 01:59:04

标签: c# caching reflection dependency-injection .net-core

我正在编写一个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容器中创建一个地图,以根据例如类型

获取properyInfo
public interface IPropertyTypeMapContainer
{
     void RegisterType(Type type);
     PropertyInfo GetInfoByName(Type type, string propertyName);
}

但是我不喜欢这样,因为我发现自己写了一些微缓存来解决类似的问题。

是否有更标准化的方式来缓存和获取PropertyInfo

0 个答案:

没有答案