Beispiel #1
0
        public override IEnumerable <IPropertyDescriptor> GetProperties(Type type, object container)
        {
            CachingItem ci = Cache.GetOrAdd(type, t => CachingItem.Create(t, _resolver));

            if (ci == null)
            {
                throw new NotSupportedException($"Type {type.FullName} is invisible.");
            }
            return(ci.Properies);
        }
Beispiel #2
0
        public override IPropertyDescriptor GetProperty(Type type, object container, string name)
        {
            CachingItem ci = Cache.GetOrAdd(type, t => CachingItem.Create(t, _resolver));

            if (ci.Error != null)
            {
                throw ci.Error;
            }
            if (ci.ExtensibleProperies.Count == 0)
            {
                return(null);
            }
            return((from ep in ci.ExtensibleProperies
                    where name.StartsWith(ep.Prefix)
                    select ep.SetName(name)).FirstOrDefault());
        }
Beispiel #3
0
        public override IEnumerable <IPropertyDescriptor> GetProperties(Type type, object container)
        {
            CachingItem ci = Cache.GetOrAdd(type, t => CachingItem.Create(t, _resolver));

            if (ci.Error != null)
            {
                throw ci.Error;
            }
            IEnumerable <IPropertyDescriptor> result = ci.Properies;

            if (container != null && ci.ExtensibleProperies.Count > 0)
            {
                foreach (var ep in ci.ExtensibleProperies)
                {
                    result = result.Concat(
                        from key in ep.GetAllKeys(container) ?? Enumerable.Empty <string>()
                        select ep.SetName(ep.Prefix + key));
                }
            }
            return(result);
        }