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); }
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()); }
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); }