private ConstructionResult Construct(ConstructionNode ctNode, object intance) { var namescopeAnnotator = new NamescopeAnnotator(metadataProvider); var prefixedTypeResolver = new PrefixedTypeResolver(new PrefixAnnotator(), directory); var trackingContext = new BuildContext(namescopeAnnotator, new AmbientRegistrator(), new InstanceLifecycleSignaler()) { PrefixedTypeResolver = prefixedTypeResolver }; var instanceCreator = new InstanceCreator(objectBuilderContext.SourceValueConverter, objectBuilderContext, directory); var objectConstructor = new ObjectBuilder(instanceCreator, objectBuilderContext, new ContextFactory(directory, objectBuilderContext)); var construct = objectConstructor.Inflate(ctNode, trackingContext, intance); return(new ConstructionResult(construct, namescopeAnnotator)); }
private ConstructionResult CreateWithParams(string xaml, Func <IObjectBuilder, ConstructionNode, BuildContext, object> createFunc) { var parseResult = GetConstructionNode(xaml); var sourceValueConverter = GetSourceValueConverter(); var instanceCreator = new InstanceCreator(sourceValueConverter, objectBuilderContext, typeDirectory); var objectBuilder = new ExtendedObjectBuilder(instanceCreator, objectBuilderContext, new ContextFactory(typeDirectory, objectBuilderContext)); var namescopeAnnotator = new NamescopeAnnotator(objectBuilderContext.MetadataProvider); var buildContext = new BuildContext(namescopeAnnotator, new AmbientRegistrator(), new InstanceLifecycleSignaler()) { PrefixAnnotator = parseResult.PrefixAnnotator, PrefixedTypeResolver = new PrefixedTypeResolver(parseResult.PrefixAnnotator, typeDirectory) }; var instance = createFunc(objectBuilder, parseResult.Root, buildContext); return(new ConstructionResult(instance, namescopeAnnotator)); }