public List <RecordingIlEmitter.RecordedInstruction> Compile( XamlDocument doc, IXamlType contextType, IXamlMethodBuilder <TBackendEmitter> populateMethod, IXamlMethodBuilder <TBackendEmitter> buildMethod, IXamlTypeBuilder <TBackendEmitter> namespaceInfoBuilder, Func <string, IXamlType, IXamlTypeBuilder <TBackendEmitter> > createClosure, string baseUri, IFileSource fileSource) { var rootGrp = (XamlValueWithManipulationNode)doc.Root; var rootType = rootGrp.Type.GetClrType(); var context = CreateRuntimeContext(doc, contextType, namespaceInfoBuilder, baseUri, rootType); var populateInstructions = CompilePopulate( fileSource, rootGrp.Manipulation, createClosure, populateMethod.Generator, context); if (buildMethod != null) { CompileBuild(fileSource, rootGrp.Value, null, buildMethod.Generator, context, populateMethod); } namespaceInfoBuilder?.CreateType(); return(populateInstructions); }
public void Compile(XamlDocument doc, IXamlType contextType, IXamlMethodBuilder <TBackendEmitter> populateMethod, IXamlMethodBuilder <TBackendEmitter> buildMethod, IXamlTypeBuilder <TBackendEmitter> namespaceInfoBuilder, Func <string, IXamlType, IXamlTypeBuilder <TBackendEmitter> > createClosure, Func <string, IXamlType, IEnumerable <IXamlType>, IXamlTypeBuilder <TBackendEmitter> > createDelegateType, string baseUri, IFileSource fileSource) { var rootGrp = (XamlValueWithManipulationNode)doc.Root; var rootType = rootGrp.Type.GetClrType(); var context = CreateRuntimeContext(doc, contextType, namespaceInfoBuilder, baseUri, rootType); CompilePopulate(fileSource, rootGrp.Manipulation, createClosure, createDelegateType, populateMethod.Generator, context); if (buildMethod != null) { CompileBuild(fileSource, rootGrp.Value, null, createDelegateType, buildMethod.Generator, context, populateMethod); } namespaceInfoBuilder?.CreateType(); }