private static void ExtractFromFields(ProviderRegistrationContext context, TypeInfo type) { foreach (FieldInfo field in type.GetFields()) { if (!field.IsStatic) { continue; } ProviderAttribute[] attrs = (ProviderAttribute[])field.GetCustomAttributes(typeof(ProviderAttribute), false); if (attrs.Length == 0) { context.DefineProvider(null, field.FieldType, field, null); } else { foreach (var pa in attrs) { foreach (var qn in pa.GetNames(field.DeclaringType, field.Name)) { try { context.DefineProvider(qn, pa.ProviderType, field, pa); } catch (Exception ex) { var fullName = field.DeclaringType.FullName + "." + field.Name; RuntimeWarning.InvalidProviderDeclared(fullName, ex); break; } } } } } }
private void ExtractFromType(ProviderRegistrationContext context, TypeInfo type) { if (type.IsPublic) { ProviderAttribute[] attrs = (ProviderAttribute[])type.GetCustomAttributes(typeof(ProviderAttribute), false); if (attrs.Length > 0) { foreach (var pa in attrs) { foreach (var qn in pa.GetNames(type.AsType())) { try { context.DefineProvider(qn, pa.ProviderType, type.AsType(), pa); } catch (Exception ex) { RuntimeWarning.InvalidProviderDeclared(type.FullName, ex); break; } } } } } }