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