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 }); }
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); }
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); }
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); }
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); }