本文整理汇总了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();
}