public FormClassProvider(string xaml, string cs) { _xaml = xaml; var ui = GetXamlUi(); NamedElements = GetNamedElements(ui); cs = PrepareCs(cs); _assembly = Compiler.Wpf.Compiler.Compile(out var messages, cs); if (_assembly != null) { _type = _assembly.GetTypes()[0]; } else { CsErrors = messages.Select(TranslateCsError); } #if DEBUG var parser = new CompilerCodeParser(cs); parser.FormatCode(); FinalCode = parser.Code; var dummy = Compiler.Wpf.Compiler.Compile(out var m2, FinalCode); DebugErrors = m2; #endif }
private string PrepareCs(string cs) { var parser = new CompilerCodeParser(cs); var className = parser.NextClass(); if (className == "") { return(cs); } BaseClass = parser.BaseClass(); if (string.IsNullOrWhiteSpace(BaseClass)) { BaseClass = "TestLegacyForm"; parser.Insert($" : {BaseClass}"); } parser.BeforeClassContent(); parser.Insert(",IForm"); parser.ClassContent(); // parser.Insert($"public {className}() => InitialiseComponents();"); parser.Insert(BuildConnectFunction()); parser.Insert(BuildGetPacketValuesFunction("GetPackedValues", ElementLevel.Capture, ElementLevel.Mandatory, ElementLevel.Result)); parser.Insert(BuildGetPacketValuesFunction("GetSpecPackedValues", ElementLevel.Specification)); parser.Insert(InsertFunctions(cs)); #if DEBUG //parser.FormatCode(); #endif return(parser.Code); }