public AvaloniaRuntimeTypeSource(ITypeFactory typeFactory)
        {
            var namespaceRegistry = new AvaloniaNamespaceRegistry();
            var featureProvider   = new AvaloniaTypeFeatureProvider();
            var typeRepository    = new AvaloniaTypeRepository(namespaceRegistry, typeFactory, featureProvider);

            inner = new RuntimeTypeSource(typeRepository, namespaceRegistry);
        }
Ejemplo n.º 2
0
        public PerspexRuntimeTypeSource(ITypeFactory typeFactory)
        {
            var namespaceRegistry = new PerspexNamespaceRegistry();
            var featureProvider   = new PerspexTypeFeatureProvider();
            var typeRepository    = new PerspexTypeRepository(namespaceRegistry, typeFactory, featureProvider);

            inner = new RuntimeTypeSource(typeRepository, namespaceRegistry);
        }
Ejemplo n.º 3
0
        public void TopDownContainsOuterObject()
        {
            sut.Process(source.InstanceWithChild);

            var dummyClassXamlType = RuntimeTypeSource.GetByType(typeof(DummyClass));
            var lastInstance       = sut.TopDownValueContext.GetLastInstance(dummyClassXamlType);

            Assert.IsType(typeof(DummyClass), lastInstance);
        }
Ejemplo n.º 4
0
        private static AutoInflatingTypeFactory CreateSut()
        {
            var inflatableTypeFactory = new DummyAutoInflatingTypeFactory(
                new TypeFactory(),
                new InflatableTranslator(),
                typeFactory => new XmlLoader(new DummyParserFactory(RuntimeTypeSource.FromAttributes(Assemblies.AssembliesInAppFolder))));

            return(inflatableTypeFactory);
        }
Ejemplo n.º 5
0
        public void RegisterOneChildInNameScope()
        {
            RuntimeTypeSource.ClearNamescopes();
            RuntimeTypeSource.EnableNameScope <DummyClass>();

            var actualInstance = Loader.FromString(File.LoadAsString(@"Xaml\Dummy\ChildInNameScope.xaml"));
            var childInScope   = ((DummyObject)actualInstance).Find("MyObject");

            Assert.IsType(typeof(ChildClass), childInScope);
        }
Ejemplo n.º 6
0
        public void RegisterOneChildInNameScopeWithoutDirective()
        {
            RuntimeTypeSource.ClearNamescopes();
            RuntimeTypeSource.EnableNameScope <DummyClass>();

            var actualInstance = Loader.FromString(Dummy.ChildInNamescopeNoNameDirective);
            var childInScope   = ((DummyObject)actualInstance).Find("MyObject");

            Assert.IsType(typeof(ChildClass), childInScope);
        }
Ejemplo n.º 7
0
        public void RegisterOneChildInNameScope()
        {
            RuntimeTypeSource.ClearNamescopes();
            RuntimeTypeSource.EnableNameScope <DummyClass>();

            sut.Process(source.ChildInNameScope);
            var actual       = sut.Result;
            var childInScope = ((DummyObject)actual).Find("MyObject");

            Assert.IsType(typeof(ChildClass), childInScope);
        }
Ejemplo n.º 8
0
        public void RegisterChildInDeeperNameScope()
        {
            RuntimeTypeSource.ClearNamescopes();
            RuntimeTypeSource.EnableNameScope <Window>();

            sut.Process(source.ChildInDeeperNameScope);
            var actual     = sut.Result;
            var textBlock1 = ((Window)actual).Find("MyTextBlock");
            var textBlock2 = ((Window)actual).Find("MyOtherTextBlock");

            Assert.IsType(typeof(TextBlock), textBlock1);
            Assert.IsType(typeof(TextBlock), textBlock2);
        }
Ejemplo n.º 9
0
        private static void Main()
        {
            var runtimeTypeSource = RuntimeTypeSource.FromAttributes(Assemblies.AssembliesInAppFolder);
            var loader            = new DefaultLoader(runtimeTypeSource);

            var model = (Zoo)loader.FromPath("Model.xaml", new Settings {
                InstanceLifeCycleListener = new MyListener()
            });
            var byName = model.Find("Rocky");

            Console.WriteLine("Loaded model:\n{0}", model);
            Console.WriteLine($"Searching an animal by name in this namescope (Zoo instance): \n\tRocky => {byName}");
            Console.ReadLine();
        }
Ejemplo n.º 10
0
        private static IRuntimeTypeSource CreateRuntimeTypeSource()
        {
            var typeFactory = new MultiFactory(
                new List <TypeFactoryRegistration>
            {
                new TypeFactoryRegistration(new TypeFactory(), type => type != typeof(ChildClass)),
                new TypeFactoryRegistration(new TypeFactoryMock((type, args) => new ChildClass {
                    Name = "InnerName"
                }), type => type == typeof(ChildClass)),
            });

            var typeFeatureProvider = new TypeFeatureProvider(new TypeConverterProvider());
            var xamlTypeRepository  = new TypeRepository(new NamespaceRegistry(), typeFactory, typeFeatureProvider);
            var typeSource          = new RuntimeTypeSource(xamlTypeRepository, new NamespaceRegistry());

            typeFeatureProvider.RegisterMetadata(typeof(DummyObject), new Metadata {
                RuntimePropertyName = "Name"
            });
            return(typeSource);
        }
        private static IRuntimeTypeSource CreateRuntimeTypeSource()
        {
            var typeFactory = new MultiFactory(
                new List<TypeFactoryRegistration>
                {
                    new TypeFactoryRegistration(new TypeFactory(), type => type != typeof (ChildClass)),
                    new TypeFactoryRegistration(new TypeFactoryMock((type, args) => new ChildClass {Name = "InnerName"}), type => type == typeof (ChildClass)),
                });

            var typeFeatureProvider = new TypeFeatureProvider(new TypeConverterProvider());
            var xamlTypeRepository = new TypeRepository(new NamespaceRegistry(), typeFactory, typeFeatureProvider);
            var typeSource = new RuntimeTypeSource(xamlTypeRepository, new NamespaceRegistry());
            typeFeatureProvider.RegisterMetadata(typeof (DummyObject), new Metadata {RuntimePropertyName = "Name"});
            return typeSource;
        }