Ejemplo n.º 1
0
        private static CreationFixture CreateWithParams(ConstructionNode node, Func <IObjectBuilder, ConstructionNode, BuildContext, object> createFunc)
        {
            var constructionContext = new ObjectBuilderContext(
                new SourceValueConverter(),
                new AttributeBasedMetadataProvider());

            var prefixAnnotator = new PrefixAnnotator();


            var executingAssembly = new[] { Assembly.GetExecutingAssembly() };

            var attributeBasedTypeDirectory = new AttributeBasedTypeDirectory(executingAssembly);
            var builder =
                new ExtendedObjectBuilder(
                    new InstanceCreator(constructionContext.SourceValueConverter, constructionContext, attributeBasedTypeDirectory),
                    constructionContext,
                    new ContextFactory(attributeBasedTypeDirectory, constructionContext));


            var newTypeDirectory = GetTypeDirectory();

            var creationContext = new BuildContext(
                new NamescopeAnnotator(constructionContext.MetadataProvider),
                new AmbientRegistrator(),
                new InstanceLifecycleSignaler())
            {
                PrefixAnnotator = prefixAnnotator, PrefixedTypeResolver = new PrefixedTypeResolver(prefixAnnotator, newTypeDirectory)
            };

            return(new CreationFixture
            {
                Result = createFunc(builder, node, creationContext),
                BuildContext = creationContext
            });
        }
Ejemplo n.º 2
0
        public void TestMethod2()
        {
            var prefixAnnotator = new PrefixAnnotator();

            var newTypeDirectory = GetTypeDirectory();

            var sut = new PrefixedTypeResolver(prefixAnnotator, newTypeDirectory);

            var childNode = new ConstructionNode(typeof(TextBlock));
            var root      = new ConstructionNode(typeof(Window))
            {
                Assignments = new List <MemberAssignment>()
                {
                    new MemberAssignment()
                    {
                        Member   = Member.FromStandard <Window>(window => window.Content),
                        Children = new[] { childNode, }
                    }
                },
            };

            prefixAnnotator.Annotate(childNode, new List <PrefixDeclaration>()
            {
                new PrefixDeclaration("a", "another")
            });

            sut.Root = root;
            var customGridType = sut.GetTypeByPrefix(childNode, "a:CustomGrid");

            Assert.Equal(typeof(CustomGrid), customGridType);
        }
Ejemplo n.º 3
0
        public void ParentPrefixesAreAvailableInChild()
        {
            var type            = typeof(TextBlock);
            var assembly        = type.GetTypeInfo().Assembly;
            var xamlNamespaces  = XamlNamespace.Map("root").With(Route.Assembly(assembly).WithNamespaces(type.Namespace));
            var prefixAnnotator = new PrefixAnnotator();

            var sut = new PrefixedTypeResolver(prefixAnnotator, new TypeDirectory(new[] { xamlNamespaces }));

            var childNode = new ConstructionNode(typeof(TextBlock));
            var root      = new ConstructionNode(typeof(Window))
            {
                Assignments = new List <MemberAssignment>()
                {
                    new MemberAssignment()
                    {
                        Member   = Member.FromStandard <Window>(window => window.Content),
                        Children = new[] { childNode, }
                    }
                },
            };

            prefixAnnotator.Annotate(root, new List <PrefixDeclaration>()
            {
                new PrefixDeclaration(string.Empty, "root")
            });

            sut.Root = root;
            var buttonType = sut.GetTypeByPrefix(childNode, "Button");

            Assert.Equal(typeof(Button), buttonType);
        }
Ejemplo n.º 4
0
        public object Load(string xaml, object intance = null)
        {
            var prefixAnnotator  = new PrefixAnnotator();
            var constructionNode = Parser.Parse(xaml, prefixAnnotator).Root;
            var build            = Builder.Build(constructionNode);

            if (build == null)
            {
                var unresolvedNodes = GetUnresolvedNodes(constructionNode);
                throw new ParseException("XAML cannot be parsed due to nodes that cannot be resolved:" + string.Join(",", unresolvedNodes));
            }
            return(build);
        }
Ejemplo n.º 5
0
        protected static ParseResult ParseResult(string xaml)
        {
            var ass = Assembly.Load(new AssemblyName("OmniXaml.Tests"));

            var namespaces = new[]
            {
                XamlNamespace.Map("root").With(Route.Assembly(ass).WithNamespaces("OmniXaml.Tests.Model")),
                XamlNamespace.Map("custom").With(Route.Assembly(ass).WithNamespaces("OmniXaml.Tests.Model.Custom")),
            };

            var directory = new TypeDirectory(namespaces);

            var resolver = new XmlTypeXmlTypeResolver(directory);
            var sut      = new XamlToTreeParser(new AttributeBasedMetadataProvider(), new[] { new InlineParser(resolver) }, resolver);

            var prefixAnnotator = new PrefixAnnotator();
            var tree            = sut.Parse(xaml, prefixAnnotator);

            return(tree);
        }