Пример #1
0
 static string GetDirectiveName(Type type, DirectiveUsageAttribute da)
 {
     if (da == null || string.IsNullOrEmpty(da.Name))
     {
         return(DIRECTIVE.Replace(type.Name, string.Empty));
     }
     else
     {
         return(da.Name);
     }
 }
Пример #2
0
        public ReflectedDirectiveFactory(Assembly assembly)
        {
            // The built-in directives don't have to be public
            Func <TypeInfo, bool> predicate = (t) => (t.IsPublic || t.IsNestedPublic);

            if (assembly == typeof(ReflectedDirectiveFactory).GetTypeInfo().Assembly)
            {
                predicate = (_) => true;
            }

            foreach (Type type in assembly.GetTypes())
            {
                if (predicate(type.GetTypeInfo()) && typeof(HxlDirective).GetTypeInfo().IsAssignableFrom(type))
                {
                    DirectiveUsageAttribute da = (DirectiveUsageAttribute)type.GetTypeInfo().GetCustomAttribute(typeof(DirectiveUsageAttribute));
                    string name = GetDirectiveName(type, da);
                    types.Add(name, type);
                }
            }
        }