当前位置: 首页>>代码示例>>C#>>正文


C# ICompiler.AddLine方法代码示例

本文整理汇总了C#中ICompiler.AddLine方法的典型用法代码示例。如果您正苦于以下问题:C# ICompiler.AddLine方法的具体用法?C# ICompiler.AddLine怎么用?C# ICompiler.AddLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ICompiler的用法示例。


在下文中一共展示了ICompiler.AddLine方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BuildDispatcher

        public static void BuildDispatcher(ICompiler compiler, IList<MethodDeclaration> methodDeclarations, string dispatcherMethodName, string returnType, string targetMethodName)
        {
            var constructorNumber = 0;
            var argumentPrefix = "c_par";

            // TODO: Hardcoded as public, however, not sure right now what to do if signatures differ.
            var accessModifier = "public ";
            var isStatic = methodDeclarations.Any(x => x.Modifiers != null && x.Modifiers.Any(y => y.Data == Keywords.Static)) ? "static " : string.Empty;

            compiler.AddLine(string.Format("{0}{1}{2}({3}): {4} {{", accessModifier, isStatic, dispatcherMethodName, OverloadHelper.GetDispatcherParameters(methodDeclarations, argumentPrefix), returnType));
            compiler.IncreaseIndentation();
            {
                foreach (var constructor in methodDeclarations)
                {
                    compiler.AddLine("if (");
                    compiler.IncreaseIndentation();
                    {
                        var parametersAreDefined = GetParametersAreDefined(methodDeclarations, constructor, argumentPrefix);
                        var parametersAreOfRightType = GetParametersAreOfRightType(constructor, argumentPrefix);

                        if (string.IsNullOrEmpty(parametersAreOfRightType))
                        {
                            compiler.AddLine(parametersAreDefined);
                        }
                        else
                        {
                            compiler.AddLine(string.Format("{0} &&", parametersAreDefined));
                            compiler.AddLine(parametersAreOfRightType);
                        }
                    }
                    compiler.DecreaseIndentation();

                    compiler.AddLine(") {");

                    compiler.IncreaseIndentation();
                    {
                        var parNumber = 0;
                        var arguments = constructor.Arguments.Count != 0
                            ? constructor.Arguments
                                .Select(x => string.Format("<{0}{1}>{2}{3}", compiler.GetTypeString(x.Type, "GetConstructorCallCastType"), GetArrayDepth(x.ArrayDepth), argumentPrefix, parNumber++))
                                .Aggregate((x, y) => x + ", " + y)
                            : string.Empty;

                        compiler.AddLine(string.Format("this.{0}{1}({2});", targetMethodName, constructorNumber++, arguments));
                        compiler.AddLine("return;");
                    }
                    compiler.DecreaseIndentation();

                    compiler.AddLine("}");
                    compiler.AddBlankLine();
                }
            }

            if (methodDeclarations.Count > 0)
            {
                compiler.AddLine(@"throw new Error(""Unrecognized paramaters called."")");
            }

            compiler.DecreaseIndentation();
            compiler.AddLine("}");
            compiler.AddBlankLine();
        }
开发者ID:JonathanLydall,项目名称:Java-Transpiler-In-C-Sharp,代码行数:62,代码来源:OverloadHelper.cs


注:本文中的ICompiler.AddLine方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。