public static string GetWhitelistKey(this ISymbol symbol, TypeKeyQuantity quantity) { if (symbol is INamespaceSymbol namespaceSymbol) { return(namespaceSymbol.GetWhitelistKey(quantity)); } if (symbol is ITypeSymbol typeSymbol) { return(typeSymbol.GetWhitelistKey(quantity)); } if (symbol is IMethodSymbol methodSymbol) { // Account for generic methods, we must check their definitions, not specific implementations if (methodSymbol.IsGenericMethod && !methodSymbol.IsDefinition) { methodSymbol = methodSymbol.OriginalDefinition; return(methodSymbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name); } } var memberSymbol = (symbol is IEventSymbol || symbol is IFieldSymbol || symbol is IPropertySymbol || symbol is IMethodSymbol) ? symbol : null; if (memberSymbol == null) { throw new ArgumentException("Invalid symbol type: Expected namespace, type or type member", nameof(symbol)); } return(memberSymbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name); }
public static string GetWhitelistKey(this ISymbol symbol, TypeKeyQuantity quantity) { var namespaceSymbol = symbol as INamespaceSymbol; if (namespaceSymbol != null) { return namespaceSymbol.GetWhitelistKey(quantity); } var typeSymbol = symbol as ITypeSymbol; if (typeSymbol != null) { return typeSymbol.GetWhitelistKey(quantity); } var methodSymbol = symbol as IMethodSymbol; if (methodSymbol != null) { // Account for generic methods, we must check their definitions, not specific implementations if (methodSymbol.IsGenericMethod && !methodSymbol.IsDefinition) { methodSymbol = methodSymbol.OriginalDefinition; return methodSymbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name; } } var memberSymbol = (symbol is IEventSymbol || symbol is IFieldSymbol || symbol is IPropertySymbol || symbol is IMethodSymbol) ? symbol : null; if (memberSymbol == null) { throw new ArgumentException("Invalid symbol type: Expected namespace, type or type member", "symbol"); } return memberSymbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name; }
static string GetWhitelistKey(INamespaceSymbol symbol, TypeKeyQuantity quantity) { switch (quantity) { case TypeKeyQuantity.ThisOnly: return(symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name); case TypeKeyQuantity.AllMembers: return(symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ".*, " + symbol.ContainingAssembly.Name); default: throw new ArgumentOutOfRangeException(nameof(quantity), quantity, null); } }
public static string GetWhitelistKey(this ITypeSymbol symbol, TypeKeyQuantity quantity) { symbol = ResolveRootType(symbol); switch (quantity) { case TypeKeyQuantity.ThisOnly: return(symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name); case TypeKeyQuantity.AllMembers: return(symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + "+*, " + symbol.ContainingAssembly.Name); default: throw new ArgumentOutOfRangeException("quantity", quantity, null); } }
public static string GetWhitelistKey(this ITypeSymbol symbol, TypeKeyQuantity quantity) { symbol = ResolveRootType(symbol); switch (quantity) { case TypeKeyQuantity.ThisOnly: return symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + ", " + symbol.ContainingAssembly.Name; case TypeKeyQuantity.AllMembers: return symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat) + "+*, " + symbol.ContainingAssembly.Name; default: throw new ArgumentOutOfRangeException("quantity", quantity, null); } }