예제 #1
0
        public static CodeNodeBuilder AttributeMethodImpl(this CodeNodeBuilder builder, MethodImplOptions options)
        {
            var flags        = Enum.GetValues(typeof(MethodImplOptions)).Cast <Enum>().Where(options.HasFlag);
            var fullFlagName = flags.Select(x => $"System.Runtime.CompilerServices.MethodImplOptions.{x}");

            return(builder.Attribute($"[System.Runtime.CompilerServices.MethodImpl({string.Join(", ", fullFlagName)})]"));
        }
예제 #2
0
        private protected void WriteContent(IndentedStringBuilder builder)
        {
            foreach (var layout in _layout)
            {
                if (layout is string str)
                {
                    builder.AppendLine(str);
                }
                if (layout is NodeInfo nodeInfo)
                {
                    var subnode = new CodeNodeBuilder();
                    nodeInfo.NodeAction(subnode);

                    builder.AppendLine(nodeInfo.Name);
                    builder.AppendLine("{");
                    subnode.WriteContent(builder.NextIndentation());
                    builder.AppendLine("}");
                }
            }
        }
 private static void AddPartialClassNode(this CodeNodeBuilder node, INamedTypeSymbol symbol, Action <CodeNodeBuilder> nodeAction)
 {
     node.AddNode(symbol.DeclaredAccessibility, $"{(symbol.IsStatic ? "static" : null)} partial {symbol.TypeKind.ToString().ToLower()} {symbol.ToDisplayString(NullableFlowState.None, SymbolDisplayFormat.MinimallyQualifiedFormat)}", nodeAction);
 }
예제 #4
0
 public static CodeNodeBuilder AttributeGenerated(this CodeNodeBuilder builder, Assembly assebmly) => builder.Attribute($"[System.CodeDom.Compiler.GeneratedCode({assebmly.GetName().Name}, {assebmly.GetName().Version})]");
예제 #5
0
 public static CodeNodeBuilder AttributeHideEditor(this CodeNodeBuilder builder) => builder.Attribute("[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]");