diff --git a/src/Controls/src/Build.Tasks/NodeILExtensions.cs b/src/Controls/src/Build.Tasks/NodeILExtensions.cs index 077c261227ff..4150f349bd47 100644 --- a/src/Controls/src/Build.Tasks/NodeILExtensions.cs +++ b/src/Controls/src/Build.Tasks/NodeILExtensions.cs @@ -640,12 +640,6 @@ public static IEnumerable PushServiceProvider(this INode node, ILCo yield return Create(Call, module.ImportMethodReference(context.Cache, ("mscorlib", "System", "Type"), methodName: "GetTypeFromHandle", parameterTypes: new[] { ("mscorlib", "System", "RuntimeTypeHandle") }, isStatic: true)); yield return Create(Ldloc, refProvider); yield return Create(Callvirt, addService); - - yield return Create(Dup); //Keep the serviceProvider on the stack - yield return Create(Ldtoken, module.ImportReference(context.Cache, ("Microsoft.Maui.Controls", "Microsoft.Maui.Controls.Xaml", "IProvideParentValues"))); - yield return Create(Call, module.ImportMethodReference(context.Cache, ("mscorlib", "System", "Type"), methodName: "GetTypeFromHandle", parameterTypes: new[] { ("mscorlib", "System", "RuntimeTypeHandle") }, isStatic: true)); - yield return Create(Ldloc, refProvider); - yield return Create(Callvirt, addService); } } diff --git a/src/Controls/src/Core/ReferenceTypeConverter.cs b/src/Controls/src/Core/ReferenceTypeConverter.cs index efc8b6e2c190..e42452b36797 100644 --- a/src/Controls/src/Core/ReferenceTypeConverter.cs +++ b/src/Controls/src/Core/ReferenceTypeConverter.cs @@ -29,7 +29,7 @@ object IExtendedTypeConverter.ConvertFromInvariantString(string value, IServiceP if (referenceProvider != null) return referenceProvider.FindByName(value) ?? throw new XamlParseException($"Can't resolve name '{value}' on Element", serviceProvider); - if (!(serviceProvider.GetService(typeof(IProvideParentValues)) is IProvideParentValues valueProvider)) + if (!(serviceProvider.GetService(typeof(IProvideValueTarget)) is IProvideParentValues valueProvider)) throw new ArgumentException("serviceProvider does not provide an IProvideValueTarget"); foreach (var target in valueProvider.ParentObjects) diff --git a/src/Controls/tests/Xaml.UnitTests/ServiceProviderTests.xaml.cs b/src/Controls/tests/Xaml.UnitTests/ServiceProviderTests.xaml.cs index 2cb3480e70d2..0ceb9c389aa0 100644 --- a/src/Controls/tests/Xaml.UnitTests/ServiceProviderTests.xaml.cs +++ b/src/Controls/tests/Xaml.UnitTests/ServiceProviderTests.xaml.cs @@ -74,7 +74,7 @@ public void TestServiceProviders(bool useCompiledXaml) //IValueConverterProvider is builtin for free Assert.AreEqual(null, page.label0.Text); Assert.AreEqual("IProvideValueTarget,IValueConverterProvider", page.label1.Text); - Assert.AreEqual("IProvideValueTarget,IValueConverterProvider,IProvideParentValues,IReferenceProvider", page.label2.Text); + Assert.AreEqual("IProvideValueTarget,IValueConverterProvider,IReferenceProvider", page.label2.Text); Assert.AreEqual("IXmlLineInfoProvider,IValueConverterProvider", page.label3.Text); } }