コード例 #1
0
 public void RegisterDynamicAttributeProvider(Type type, ITypeDynamicAttributeProvider provider)
 {
     if (type.IsGenericTypeDefinition)
     {
         _genericProviders.Add(type, provider);
     }
     else
     {
         _providers.Add(type, provider);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
                    }
                }
            }
        }