/// <summary> /// Adds one or more specific types and all their members to the whitelist. /// </summary> /// <param name="target"></param> /// <param name="types"></param> public void AllowTypes(MyWhitelistTarget target, params Type[] types) { if (types.IsNullOrEmpty()) { throw new MyWhitelistException("Needs at least one type"); } AssertVitality(); for (var index = 0; index < types.Length; index++) { var type = types[index]; if (type == null) { throw new MyWhitelistException("The type in index " + index + " is null"); } var typeSymbol = ResolveTypeSymbol(type); Whitelist.Register(target, typeSymbol, type); } }
/// <summary> /// Adds the entire namespace of one or more given types. /// </summary> /// <param name="target"></param> /// <param name="types"></param> public void AllowNamespaceOfTypes(MyWhitelistTarget target, params Type[] types) { if (types.IsNullOrEmpty()) { throw new MyWhitelistException("Needs at least one type"); } AssertVitality(); for (var index = 0; index < types.Length; index++) { var type = types[index]; if (type == null) { throw new MyWhitelistException("The type in index " + index + " is null"); } var typeSymbol = ResolveTypeSymbol(type); var namespaceSymbol = typeSymbol.ContainingNamespace; if (namespaceSymbol == null || namespaceSymbol.IsGlobalNamespace) { continue; } Whitelist.Register(target, namespaceSymbol, type); } }