本文整理汇总了C#中ScriptSharp.Generator.ScriptGenerator.AddGeneratedClass方法的典型用法代码示例。如果您正苦于以下问题:C# ScriptGenerator.AddGeneratedClass方法的具体用法?C# ScriptGenerator.AddGeneratedClass怎么用?C# ScriptGenerator.AddGeneratedClass使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ScriptSharp.Generator.ScriptGenerator
的用法示例。
在下文中一共展示了ScriptGenerator.AddGeneratedClass方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateClass
private static void GenerateClass(ScriptGenerator generator, ClassSymbol classSymbol) {
if (classSymbol.HasGlobalMethods) {
GenerateGlobalMethods(generator, classSymbol);
generator.AddGeneratedClass(classSymbol);
return;
}
ScriptTextWriter writer = generator.Writer;
string name = classSymbol.FullGeneratedName;
if (classSymbol.Namespace.Length == 0) {
writer.Write("window.");
}
writer.Write(name);
writer.WriteTrimmed(" = ");
writer.Write("function");
if (generator.Options.DebugFlavor) {
writer.Write(" ");
writer.Write(name.Replace(".", "_"));
}
writer.Write("(");
if ((classSymbol.Constructor != null) && (classSymbol.Constructor.Parameters != null)) {
bool firstParameter = true;
foreach (ParameterSymbol parameterSymbol in classSymbol.Constructor.Parameters) {
if (firstParameter == false) {
writer.WriteTrimmed(", ");
}
writer.Write(parameterSymbol.GeneratedName);
firstParameter = false;
}
}
writer.WriteTrimmed(") ");
writer.Write("{");
writer.WriteNewLine();
writer.Indent++;
if (generator.Options.EnableDocComments) {
DocCommentGenerator.GenerateComment(generator, classSymbol);
}
foreach (MemberSymbol memberSymbol in classSymbol.Members) {
if ((memberSymbol.Type == SymbolType.Field) &&
(memberSymbol.Visibility & MemberVisibility.Static) == 0) {
FieldSymbol fieldSymbol = (FieldSymbol)memberSymbol;
if (fieldSymbol.HasInitializer) {
writer.Write("this.");
writer.Write(fieldSymbol.GeneratedName);
writer.WriteTrimmed(" = ");
CodeGenerator.GenerateScript(generator, fieldSymbol);
writer.Write(";");
writer.WriteNewLine();
}
}
}
if (classSymbol.Constructor != null) {
CodeGenerator.GenerateScript(generator, classSymbol.Constructor);
}
else if (classSymbol.BaseClass != null) {
writer.Write(classSymbol.FullGeneratedName);
writer.Write(".initializeBase(this);");
writer.WriteNewLine();
}
writer.Indent--;
writer.Write("}");
writer.WriteSignificantNewLine();
foreach (MemberSymbol memberSymbol in classSymbol.Members) {
if ((memberSymbol.Type != SymbolType.Field) &&
(memberSymbol.Visibility & MemberVisibility.Static) != 0) {
MemberGenerator.GenerateScript(generator, memberSymbol);
}
}
bool hasPrototypeMembers = false;
bool firstMember = true;
bool lastMemberWasField = true;
foreach (MemberSymbol memberSymbol in classSymbol.Members) {
if ((memberSymbol.Visibility & MemberVisibility.Static) == 0) {
if ((memberSymbol.Type == SymbolType.Field) &&
((FieldSymbol)memberSymbol).HasInitializer) {
continue;
}
if ((memberSymbol is CodeMemberSymbol) &&
((CodeMemberSymbol)memberSymbol).IsAbstract) {
continue;
}
if (hasPrototypeMembers == false) {
hasPrototypeMembers = true;
writer.Write(name);
writer.Write(".prototype");
writer.WriteTrimmed(" = ");
writer.Write("{");
writer.WriteNewLine();
writer.Indent++;
}
//.........这里部分代码省略.........