Skip to content

Commit 39b97b6

Browse files
authored
Make MapChangedEventHandler2EventSource ctor generic (#2300)
Update InteropReferences to expose MapChangedEventHandler2EventSource_ctor(keyType, valueType) which builds a generic MapChangedEventHandler2EventSource reference and returns its constructor MemberReference. Adjust InteropTypeDefinitionBuilder to extract the delegate's key/value TypeArguments and pass them into the new ctor helper. Removes the previous non-generic ctor property.
1 parent 2d2423b commit 39b97b6

2 files changed

Lines changed: 18 additions & 8 deletions

File tree

src/WinRT.Interop.Generator/Builders/InteropTypeDefinitionBuilder.EventSource.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,13 @@ public static void MapChangedEventHandler2(
123123
ModuleDefinition module,
124124
out TypeDefinition eventSourceType)
125125
{
126+
TypeSignature keyType = delegateType.TypeArguments[0];
127+
TypeSignature valueType = delegateType.TypeArguments[1];
128+
126129
DerivedEventSource(
127130
delegateType: delegateType,
128131
baseEventSourceType: interopReferences.MapChangedEventHandler2EventSource,
129-
baseEventSource_ctor: interopReferences.MapChangedEventHandler2EventSource_ctor,
132+
baseEventSource_ctor: interopReferences.MapChangedEventHandler2EventSource_ctor(keyType, valueType),
130133
marshallerType: marshallerType,
131134
interopReferences: interopReferences,
132135
module: module,

src/WinRT.Interop.Generator/References/InteropReferences.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,13 +2302,6 @@ public InteropReferences(
23022302
/// </summary>
23032303
public MemberReference WindowsRuntimeComWrappersMarshallerAttribute_ctor => field ??= WindowsRuntimeComWrappersMarshallerAttribute.CreateConstructorReference(_corLibTypeFactory);
23042304

2305-
/// <summary>
2306-
/// Gets the <see cref="MemberReference"/> for <see cref="MapChangedEventHandler2EventSource"/>'s constructor.
2307-
/// </summary>
2308-
public MemberReference MapChangedEventHandler2EventSource_ctor => field ??= MapChangedEventHandler2EventSource.CreateConstructorReference(
2309-
corLibTypeFactory: _corLibTypeFactory,
2310-
parameterTypes: [WindowsRuntimeObjectReference.ToReferenceTypeSignature(), _corLibTypeFactory.Int32]);
2311-
23122305
/// <summary>
23132306
/// Gets the <see cref="MemberReference"/> for <c>WindowsRuntime.InteropServices.WindowsRuntimeComWrappersMarshallerAttribute.GetOrCreateComInterfaceForObject(object)</c>.
23142307
/// </summary>
@@ -3625,6 +3618,20 @@ public MemberReference VectorChangedEventHandler1EventSource_ctor(TypeSignature
36253618
parameterTypes: [WindowsRuntimeObjectReference.ToReferenceTypeSignature(), _corLibTypeFactory.Int32]);
36263619
}
36273620

3621+
/// <summary>
3622+
/// Gets the <see cref="MemberReference"/> for <see cref="MapChangedEventHandler2EventSource"/>'s constructor.
3623+
/// </summary>
3624+
/// <param name="keyType">The type of keys in the observable map.</param>
3625+
/// <param name="valueType">The type of values in the observable map.</param>
3626+
public MemberReference MapChangedEventHandler2EventSource_ctor(TypeSignature keyType, TypeSignature valueType)
3627+
{
3628+
return MapChangedEventHandler2EventSource
3629+
.MakeGenericReferenceType(keyType, valueType)
3630+
.ToTypeDefOrRef()
3631+
.CreateConstructorReference(
3632+
corLibTypeFactory: _corLibTypeFactory,
3633+
parameterTypes: [WindowsRuntimeObjectReference.ToReferenceTypeSignature(), _corLibTypeFactory.Int32]);
3634+
}
36283635

36293636
/// <summary>
36303637
/// Gets the <see cref="MemberReference"/> for the <c>.ctor</c> method of a given nullable value type.

0 commit comments

Comments
 (0)