@@ -76,7 +76,7 @@ public static (XamlLanguageTypeMappings language, XamlLanguageEmitMappings<IXaml
76
76
ContextTypeBuilderCallback = definition =>
77
77
{
78
78
EmitNameScopeField ( rv , typeSystem , definition ) ;
79
- EmitEagerParentStackProvider ( rv , typeSystem , definition ) ;
79
+ EmitEagerParentStackProvider ( rv , typeSystem , definition , runtimeHelpers ) ;
80
80
}
81
81
} ;
82
82
return ( rv , emit ) ;
@@ -104,7 +104,8 @@ private static void EmitNameScopeField(
104
104
private static void EmitEagerParentStackProvider (
105
105
XamlLanguageTypeMappings mappings ,
106
106
IXamlTypeSystem typeSystem ,
107
- IXamlILContextDefinition < IXamlILEmitter > definition )
107
+ IXamlILContextDefinition < IXamlILEmitter > definition ,
108
+ IXamlType runtimeHelpers )
108
109
{
109
110
var interfaceType = typeSystem . FindType ( "Avalonia.Markup.Xaml.XamlIl.Runtime.IAvaloniaXamlIlEagerParentStackProvider" ) ;
110
111
@@ -122,14 +123,22 @@ private static void EmitEagerParentStackProvider(
122
123
typeSystem . FindType ( "System.Object" ) ,
123
124
typeSystem . FindType ( "System.Type" ) ) ) ;
124
125
126
+ var asEagerParentStackProviderMethod = runtimeHelpers . GetMethod ( new FindMethodMethodSignature (
127
+ "AsEagerParentStackProvider" ,
128
+ interfaceType ,
129
+ mappings . ParentStackProvider )
130
+ {
131
+ IsStatic = true
132
+ } ) ;
133
+
125
134
// IAvaloniaXamlIlEagerParentStackProvider? ParentProvider
126
- // => (IAvaloniaXamlIlEagerParentStackProvider) _serviceProvider.GetService(typeof(IAvaloniaXamlIlParentStackProvider))
135
+ // => XamlIlRuntimeHelpers.AsEagerParentStackProvider( _serviceProvider.GetService(typeof(IAvaloniaXamlIlParentStackProvider)));
127
136
var parentProviderGetter = ImplementInterfacePropertyGetter ( "ParentProvider" ) ;
128
137
parentProviderGetter . Generator
129
138
. LdThisFld ( definition . ParentServiceProviderField )
130
139
. Ldtype ( mappings . ParentStackProvider )
131
140
. EmitCall ( serviceProviderGetServiceMethod )
132
- . Castclass ( interfaceType )
141
+ . EmitCall ( asEagerParentStackProviderMethod )
133
142
. Ret ( ) ;
134
143
135
144
IXamlMethodBuilder < IXamlILEmitter > ImplementInterfacePropertyGetter ( string propertyName )
0 commit comments