internal static bool ShouldIncludeEntity(this IHandleNameWrapper entity, ISet <string> excludeMembersAttributes, ISet <string> excludeAttributes) { if (entity is IHandleTypeNamedWrapper typeNamedWrapper) { if (!typeNamedWrapper.ShouldIncludeEntityAccessibility()) { return(false); } } if (entity is AttributeWrapper attributeWrapper && excludeAttributes.Contains(attributeWrapper.ReflectionFullName)) { return(false); } if (entity is IHasAttributes hasAttributes) { var attributes = hasAttributes.Attributes; if (attributes == null) { return(true); } return(!attributes.Any(attr => excludeMembersAttributes.Contains(attr.ReflectionFullName))); } return(true); }
public static ParameterSyntax?Generate(IHandleNameWrapper nameWrapper, ISet <string> excludeMembersAttributes, ISet <string> excludeAttributes, Nullability currentNullability, bool isExtensionMethod) { if (!(nameWrapper is ParameterWrapper parameterWrapper)) { return(null); } EqualsValueClauseSyntax?equals = null; if (parameterWrapper.HasDefaultValue) { var valueSyntax = SyntaxHelper.GetValueExpression(parameterWrapper.ParameterType, parameterWrapper.DefaultValue !); if (valueSyntax != null) { equals = EqualsValueClause(valueSyntax); } } parameterWrapper.Attributes.TryGetNullable(out var nullability); var name = parameterWrapper.Name; var attributes = GeneratorFactory.Generate(parameterWrapper.Attributes, excludeMembersAttributes, excludeAttributes); var modifiers = parameterWrapper.GetModifiers(isExtensionMethod); var parameterType = parameterWrapper.ParameterType.GetTypeSyntax(nameWrapper, currentNullability, nullability, false); return(Parameter(attributes, modifiers, parameterType, name, equals !)); }
/// <summary> /// Gets the value tuple elements and attribute if the class has one. /// </summary> /// <param name="wrapper">The wrapper to get the value tuples for.</param> /// <param name="tupleElementNames">The tuple element names if there is any.</param> /// <returns>If we were able to retrieve the values.</returns> public static bool HasTupleElementNamesAttribute(this IHandleNameWrapper wrapper, out string?[] tupleElementNames) { if (wrapper is null) { throw new ArgumentNullException(nameof(wrapper)); } if (wrapper is IHasAttributes hasAttributes && hasAttributes.Attributes.TryGetKnownAttribute(KnownAttribute.TupleElementNames, out var attributeWrapper)) { tupleElementNames = ProcessStringFixedValue(attributeWrapper.FixedArguments[0].Value); return(true); } if (wrapper is IHasReturnAttributes returnAttributes) { if (returnAttributes.ReturnAttributes.TryGetKnownAttribute(KnownAttribute.TupleElementNames, out attributeWrapper)) { tupleElementNames = ProcessStringFixedValue(attributeWrapper.FixedArguments[0].Value); return(true); } } tupleElementNames = Array.Empty <string>(); return(false); }
/// <summary> /// Determines if the specified type is a KnownTypeCode. /// </summary> /// <param name="typeDefinition">The type to check.</param> /// <returns>The known type code, None if it's not a known type code.</returns> internal static KnownTypeCode ToKnownTypeCode(this IHandleNameWrapper typeDefinition) { if (typeDefinition == null) { return(KnownTypeCode.None); } string name = typeDefinition.FullName; if (_nameToTypeCodes.TryGetValue(name, out var knownTypeCode)) { return(knownTypeCode); } return(KnownTypeCode.None); }