public void RegisterDynamicAttributeProvider(Type type, ITypeDynamicAttributeProvider provider) { if (type.IsGenericTypeDefinition) { _genericProviders.Add(type, provider); } else { _providers.Add(type, provider); } }
private bool TryGetProvider(Type type, out ITypeDynamicAttributeProvider provider) { provider = null; if (!_providers.TryGetValue(type, out provider)) { if (type.IsGenericType) { _genericProviders.TryGetValue(type.GetGenericTypeDefinition(), out provider); } } return(provider != null); }
private void InitializeTypesWithTypeDynamicAttributeProviderAttribute() { List <Type> types = new List <Type>(); foreach (Type type in TypeHelper.GetAllLoadedTypes()) { var attributes = type.GetCustomAttributes(typeof(TypeDynamicAttributeProviderAttribute), false); if (attributes.Length > 0) { ITypeDynamicAttributeProvider provider = Activator.CreateInstance(type) as ITypeDynamicAttributeProvider; foreach (var attribute in attributes) { var providerAttribute = attribute as TypeDynamicAttributeProviderAttribute; this.RegisterDynamicAttributeProvider(providerAttribute.TargetType, provider); } } } }