Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }