From bfedaa9df8c6ee27b7b4016ce61b36511c120c81 Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Fri, 5 Feb 2021 16:25:02 -0500 Subject: [PATCH 1/3] Smaple.cs LookForTypeByName(string) add assmbiles to search in - Microsoft.Toolkit.Uwp.UI.Controls -> Microsoft.Toolkit.Uwp.UI.Controls.Core + Microsoft.Toolkit.Uwp.UI.Controls.Layout + Microsoft.Toolkit.Uwp.UI.Controls.Media + Microsoft.Toolkit.Uwp.UI.Controls.Media --- .../Models/Sample.cs | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs index 81244e55df0..4010016252e 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs @@ -648,9 +648,9 @@ private static Type LookForTypeByName(string typeName) } } - // Search in Microsoft.Toolkit.Uwp.UI.Controls - var controlsProxyType = GridSplitter.GridResizeDirection.Auto; - assembly = controlsProxyType.GetType().GetTypeInfo().Assembly; + // Search in Microsoft.Toolkit.Uwp.UI.Controls.Core + var controlsCoreProxyType = StackMode.Replace; + assembly = controlsCoreProxyType.GetType().GetTypeInfo().Assembly; foreach (var typeInfo in assembly.ExportedTypes) { @@ -718,6 +718,18 @@ private static Type LookForTypeByName(string typeName) } } + // Search in Microsoft.Toolkit.Uwp.UI.Controls.Layout + var controlsLayoutProxyType = GridSplitter.GridResizeDirection.Auto; + assembly = controlsLayoutProxyType.GetType().GetTypeInfo().Assembly; + + foreach (var typeInfo in assembly.ExportedTypes) + { + if (typeInfo.Name == typeName) + { + return typeInfo; + } + } + // Search in Microsoft.Toolkit.Uwp.UI.Controls.Markdown var markdownTextBlockType = typeof(MarkdownTextBlock); assembly = markdownTextBlockType.GetTypeInfo().Assembly; @@ -730,6 +742,30 @@ private static Type LookForTypeByName(string typeName) } } + // Search in Microsoft.Toolkit.Uwp.UI.Controls.Media + var controlsMediaProxyType = BitmapFileFormat.Bmp; + assembly = controlsMediaProxyType.GetType().GetTypeInfo().Assembly; + + foreach (var typeInfo in assembly.ExportedTypes) + { + if (typeInfo.Name == typeName) + { + return typeInfo; + } + } + + // Search in Microsoft.Toolkit.Uwp.UI.Controls.Primitivs + var controlsPrimitivsProxyType = StretchChild.Last; + assembly = controlsPrimitivsProxyType.GetType().GetTypeInfo().Assembly; + + foreach (var typeInfo in assembly.ExportedTypes) + { + if (typeInfo.Name == typeName) + { + return typeInfo; + } + } + return null; } From 99faaf351ffba1517eff0e31d36e053bb25b3320 Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Mon, 8 Feb 2021 12:34:28 -0500 Subject: [PATCH 2/3] Smaple.cs: Simplfy LookForTypeByName --- .../Models/Sample.cs | 158 +++--------------- 1 file changed, 20 insertions(+), 138 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs index 4010016252e..530a111c902 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs @@ -629,144 +629,26 @@ public async Task PreparePropertyDescriptorAsync() private static Type LookForTypeByName(string typeName) { // First search locally - var result = System.Type.GetType(typeName); - - if (result != null) - { - return result; - } - - // Search in Windows - var proxyType = VerticalAlignment.Center; - var assembly = proxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.Core - var controlsCoreProxyType = StackMode.Replace; - assembly = controlsCoreProxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // TODO Reintroduce graph controls - //// Search in Microsoft.Toolkit.Graph.Controls - //var graphControlsProxyType = typeof(UserToPersonConverter); - //assembly = graphControlsProxyType.GetTypeInfo().Assembly; - - //foreach (var typeInfo in assembly.ExportedTypes) - //{ - // if (typeInfo.Name == typeName) - // { - // return typeInfo; - // } - //} - - // Search in Microsoft.Toolkit.Uwp.UI.Animations - var animationsProxyType = EasingType.Default; - assembly = animationsProxyType.GetType().GetTypeInfo().Assembly; - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI - var uiProxyType = ImageBlendMode.Multiply; - assembly = uiProxyType.GetType().GetTypeInfo().Assembly; - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.Input.GazeInteraction - var gazeType = Interaction.Enabled; - assembly = gazeType.GetType().GetTypeInfo().Assembly; - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.DataGrid - var dataGridProxyType = DataGridGridLinesVisibility.None; - assembly = dataGridProxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.Layout - var controlsLayoutProxyType = GridSplitter.GridResizeDirection.Auto; - assembly = controlsLayoutProxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.Markdown - var markdownTextBlockType = typeof(MarkdownTextBlock); - assembly = markdownTextBlockType.GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.Media - var controlsMediaProxyType = BitmapFileFormat.Bmp; - assembly = controlsMediaProxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - // Search in Microsoft.Toolkit.Uwp.UI.Controls.Primitivs - var controlsPrimitivsProxyType = StretchChild.Last; - assembly = controlsPrimitivsProxyType.GetType().GetTypeInfo().Assembly; - - foreach (var typeInfo in assembly.ExportedTypes) - { - if (typeInfo.Name == typeName) - { - return typeInfo; - } - } - - return null; + if (System.Type.GetType(typeName) is Type systemType) + { + return systemType; + } + + return + VerticalAlignment.Center.GetType().Assembly.ExportedTypes // Windows + .Concat(StackMode.Replace.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Core + + // TODO Reintroduce graph controls + // .Concat(typeof(UserToPersonConverter).Assembly.ExportedTypes) // Search in Microsoft.Toolkit.Graph.Controls + .Concat(EasingType.Default.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Animations + .Concat(ImageBlendMode.Multiply.GetType().Assembly.ExportedTypes) // Search in Microsoft.Toolkit.Uwp.UI + .Concat(Interaction.Enabled.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.Input.GazeInteraction + .Concat(DataGridGridLinesVisibility.None.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.DataGrid + .Concat(GridSplitter.GridResizeDirection.Auto.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Layout + .Concat(typeof(MarkdownTextBlock).Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Markdown + .Concat(BitmapFileFormat.Bmp.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Media + .Concat(StretchChild.Last.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Primitivs + .FirstOrDefault(t => t.Name == typeName); } private static async Task GetDocsSHA() From ba5f7ff2eb3623450e26d637cdd37407d80aec25 Mon Sep 17 00:00:00 2001 From: Rosario Pulella Date: Mon, 8 Feb 2021 12:51:24 -0500 Subject: [PATCH 3/3] Make execution more "lazy" Should run more like the for loop version. Loads types from one assembly at a time. --- .../Models/Sample.cs | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs index 530a111c902..ea377e62513 100644 --- a/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs +++ b/Microsoft.Toolkit.Uwp.SampleApp/Models/Sample.cs @@ -634,21 +634,25 @@ private static Type LookForTypeByName(string typeName) return systemType; } - return - VerticalAlignment.Center.GetType().Assembly.ExportedTypes // Windows - .Concat(StackMode.Replace.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Core + var targets = new Type[] + { + VerticalAlignment.Center.GetType(), // Windows + StackMode.Replace.GetType(), // Microsoft.Toolkit.Uwp.UI.Controls.Core // TODO Reintroduce graph controls - // .Concat(typeof(UserToPersonConverter).Assembly.ExportedTypes) // Search in Microsoft.Toolkit.Graph.Controls - .Concat(EasingType.Default.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Animations - .Concat(ImageBlendMode.Multiply.GetType().Assembly.ExportedTypes) // Search in Microsoft.Toolkit.Uwp.UI - .Concat(Interaction.Enabled.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.Input.GazeInteraction - .Concat(DataGridGridLinesVisibility.None.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.DataGrid - .Concat(GridSplitter.GridResizeDirection.Auto.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Layout - .Concat(typeof(MarkdownTextBlock).Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Markdown - .Concat(BitmapFileFormat.Bmp.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Media - .Concat(StretchChild.Last.GetType().Assembly.ExportedTypes) // Microsoft.Toolkit.Uwp.UI.Controls.Primitivs - .FirstOrDefault(t => t.Name == typeName); + // typeof(UserToPersonConverter)) // Search in Microsoft.Toolkit.Graph.Controls + EasingType.Default.GetType(), // Microsoft.Toolkit.Uwp.UI.Animations + ImageBlendMode.Multiply.GetType(), // Search in Microsoft.Toolkit.Uwp.UI + Interaction.Enabled.GetType(), // Microsoft.Toolkit.Uwp.Input.GazeInteraction + DataGridGridLinesVisibility.None.GetType(), // Microsoft.Toolkit.Uwp.UI.Controls.DataGrid + GridSplitter.GridResizeDirection.Auto.GetType(), // Microsoft.Toolkit.Uwp.UI.Controls.Layout + typeof(MarkdownTextBlock), // Microsoft.Toolkit.Uwp.UI.Controls.Markdown + BitmapFileFormat.Bmp.GetType(), // Microsoft.Toolkit.Uwp.UI.Controls.Media + StretchChild.Last.GetType() // Microsoft.Toolkit.Uwp.UI.Controls.Primitivs + }; + + return targets.SelectMany(t => t.Assembly.ExportedTypes) + .FirstOrDefault(t => t.Name == typeName); } private static async Task GetDocsSHA()