public virtual DisplayInfo GetDisplayInfo(Type modelType, PropertyInfo propertyInfo)
        {
            modelType.CheckArgument(nameof(modelType));
            propertyInfo.CheckArgument(nameof(propertyInfo));

            var handled    = false;
            var result     = default(DisplayInfo);
            var modelName  = modelType.Name;
            var originName = propertyInfo.Name;

            BeforeGetDisplayInfo(modelName, originName, ref result, ref handled);
            if (handled == false)
            {
                result = ParentComponent?.GetDisplayInfo(modelType, propertyInfo);
                if (result == default)
                {
                    if (DisplayInfos.TryGetValue($"{modelName}{originName}", out result) == false)
                    {
                        DisplayInfos.TryGetValue($"{originName}", out result);
                    }
                }
            }
            AfterGetDisplayInfo(modelName, originName, result);
            return(result);
        }
        public virtual DisplayInfo GetDisplayInfo(PropertyInfo propertyInfo)
        {
            propertyInfo.CheckArgument(nameof(propertyInfo));

            var handled    = false;
            var result     = default(DisplayInfo);
            var originName = propertyInfo.Name;

            BeforeGetDisplayInfo(originName, ref result, ref handled);
            if (handled == false)
            {
                result = ParentComponent?.GetDisplayInfo(propertyInfo);
                if (result == default)
                {
                    DisplayInfos.TryGetValue(originName, out result);
                }
            }
            AfterGetDisplayInfo(originName, result);
            return(result);
        }