Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
000c0d3
Add support for IList
manodasanW Oct 12, 2025
2346784
Add generic interface support
manodasanW Oct 12, 2025
5aa416a
Update for array support
manodasanW Oct 19, 2025
021ccd9
Array support for ABI side
manodasanW Oct 20, 2025
37fc263
Fix TypedEventHandler and other delegate issues
manodasanW Oct 20, 2025
9926aa5
More fixes
manodasanW Oct 20, 2025
2525cf0
Fix bad merge
manodasanW Oct 20, 2025
f29f4ea
Fix compilation issues
manodasanW Oct 20, 2025
5e3d23e
generic IID fix
manodasanW Oct 20, 2025
836c892
Fix property with array return types
manodasanW Oct 20, 2025
fe3c5e3
Rename item and fix protected interface not projecting
manodasanW Oct 20, 2025
1742ea2
More fixes to get projections compiling
manodasanW Oct 20, 2025
d20640f
Fix spacing
manodasanW Oct 20, 2025
2ffe690
Move couple event sources to be with where the delegates are defined.
manodasanW Oct 20, 2025
08a3094
Fix issues
manodasanW Oct 21, 2025
dbd7fd5
More fixes while trying to generate the Windows SDK projection
manodasanW Oct 23, 2025
925f399
Constructor fixes
manodasanW Oct 23, 2025
564f2d2
More fixes
manodasanW Oct 24, 2025
6085423
Restore to original projections
manodasanW Oct 24, 2025
97297cd
Fix
manodasanW Oct 24, 2025
c87f58b
Fix IIDs
manodasanW Oct 24, 2025
0e655e2
Renames
manodasanW Oct 25, 2025
f5ccbd0
Get WinUI projection building
manodasanW Oct 25, 2025
eb2a032
Get other projections building
manodasanW Oct 25, 2025
1c1740a
Enable in slnx
manodasanW Oct 25, 2025
7afa149
More fixes
manodasanW Oct 25, 2025
a78cde0
Fix additions
manodasanW Oct 26, 2025
0bb9389
Add file
manodasanW Oct 26, 2025
f9a95c7
Fix COM interop helpers
manodasanW Oct 27, 2025
d3420fc
Fix boxing
manodasanW Oct 27, 2025
762e948
Fix boxing logic to scope to value types
manodasanW Oct 28, 2025
cd06d35
Try to fix build
manodasanW Oct 29, 2025
7afeec8
PR feedback
manodasanW Oct 30, 2025
fdd5942
PR feedback
manodasanW Oct 31, 2025
c8d3906
Fix unsafe acessors
manodasanW Oct 31, 2025
cc57928
Optimizations
manodasanW Nov 1, 2025
08efcbd
Apply optimization to internal constructor
manodasanW Nov 1, 2025
e185e84
Fix test
manodasanW Nov 2, 2025
37275ba
Fix build
manodasanW Nov 2, 2025
7de7e30
Fix build
manodasanW Nov 2, 2025
53cc428
Fix interop type name
manodasanW Nov 3, 2025
e5ee952
Fix objref to not have global in its identifier name
manodasanW Nov 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Projections/Benchmark/Benchmark.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

<ItemGroup>
<ProjectReference Include="..\..\TestWinRT\BenchmarkComponent\BenchmarkComponent.vcxproj" />
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
</ItemGroup>
Expand Down
58 changes: 7 additions & 51 deletions src/Projections/Test/Test.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,66 +14,22 @@
<ProjectReference Include="..\..\TestWinRT\test_component_derived\test_component_derived.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\test_component_fast\test_component_fast.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />

<!--
<ProjectReference Include="..\WinAppSDK\WinAppSDK.csproj" />
-->
<InternalsVisibleTo Include="UnitTest" />
</ItemGroup>

<PropertyGroup>
<!-- Uncomment to generate projection -->
<CsWinRTExcludes>
TestComponentCSharp.AnotherAssembly;
</CsWinRTExcludes>
<CsWinRTIncludes>
TestComponent.Blittable;
TestComponent.NonBlittable;
TestComponent.Nested;
TestComponentCSharp.FlagValue;
TestComponentCSharp.EnumValue;
TestComponentCSharp.FlagStruct;
TestComponentCSharp.EnumStruct;
TestComponentCSharp.BlittableStruct;
TestComponentCSharp.ComposedBlittableStruct;
TestComponentCSharp.NonBlittableStringStruct;
TestComponentCSharp.NonBlittableBoolStruct;
TestComponentCSharp.NonBlittableRefStruct;
TestComponentCSharp.ComposedNonBlittableStruct
TestComponentCSharp.CustomDisposableTest;
TestComponentCSharp.ICustomDisposableTest;
TestComponent.Composable;
TestComponent.IComposableStatics;
TestComponent.IRequiredOne;
TestComponent.IRequiredTwo;
TestComponent.IRequiredThree;
TestComponent.IRequiredFour;
TestComponent.IComposable;
TestComponentCSharp.ComImports;
TestComponentCSharp.IComImports;
TestComponentCSharp.ISingleton;
TestComponentCSharp.Singleton;
TestComponent.Param1Handler;
TestComponent.Param2Handler;
TestComponent.Param3Handler;
TestComponent.Param4Handler;
TestComponent.Param5Handler;
TestComponent.Param6Handler;
TestComponent.Param7Handler;
TestComponent.Param8Handler;
TestComponent.Param9Handler;
TestComponent.Param10Handler;
TestComponent.Param11Handler;
TestComponent.Param12Handler;
TestComponent.Param13Handler;
TestComponent.Param14Handler;
TestComponent.Param15Handler;
TestComponentCSharp.EventWithReturn;
TestComponentCSharp.EventWithGuid;
TestComponentCSharp.ProvideInt;
TestComponentCSharp.ProvideBool;
TestComponentCSharp.ProvideString;
TestComponent;
TestComponentCSharp;
test_component_base;
test_component_derived;
test_component_fast;
</CsWinRTIncludes>

<!--PkgMicrosoft_WindowsAppSDK is set in in obj\*.csproj.nuget.g.props with TargetFramework condition, doesn't support multi-targeting-->
<PkgMicrosoft_WindowsAppSDK>$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.windowsappsdk', '$(MicrosoftWinAppSDKVersion)'))</PkgMicrosoft_WindowsAppSDK>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<ItemGroup>
<ProjectReference Include="..\..\Tests\TestComponentCSharp\TestComponentCSharp.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\TestComponent\TestComponent.vcxproj" />
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
<ProjectReference Include="..\WinAppSDK\WinAppSDK.csproj" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<ProjectReference Include="..\..\TestWinRT\TestComponent\TestComponent.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\test_component_base\test_component_base.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\test_component_derived\test_component_derived.vcxproj" />
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
<ProjectReference Include="..\WinAppSDK\WinAppSDK.csproj" />
Expand Down
2 changes: 1 addition & 1 deletion src/Projections/TestSubset/TestSubset.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<ProjectReference Include="..\..\TestWinRT\TestComponent\TestComponent.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\test_component_base\test_component_base.vcxproj" />
<ProjectReference Include="..\..\TestWinRT\test_component_derived\test_component_derived.vcxproj" />
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
<ProjectReference Include="..\WinAppSDK\WinAppSDK.csproj" />
Expand Down
2 changes: 1 addition & 1 deletion src/Projections/WinAppSDK/WinAppSDK.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
<PackageReference Include="Microsoft.WindowsAppSDK" GeneratePathProperty="true">
Expand Down
16 changes: 1 addition & 15 deletions src/Projections/WinUI/WinUI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<ProjectReference Include="..\Windows\Windows.csproj" />
<PackageReference Include="Microsoft.WinUI" GeneratePathProperty="true">
Expand All @@ -22,22 +22,8 @@
<CsWinRTFilters>
-exclude Windows
-include Microsoft
# The current WinUI nuget incorrectly references several Windows.* types that should be
# Microsoft.* types instead. Temporarily include these to enable the build
-include Windows.UI.Xaml.Interop.Type
-include Windows.UI.Xaml.Interop.NotifyCollectionChangedAction
-include Windows.UI.Xaml.Markup.ContentPropertyAttribute
-include Windows.UI.Xaml.StyleTypedPropertyAttribute
-include Windows.UI.Xaml.TemplatePartAttribute
-include Windows.UI.Xaml.TemplateVisualStateAttribute
-include Windows.UI.Xaml.Data.BindableAttribute
-include Windows.UI.Xaml.Markup.ContentPropertyAttribute
-include Windows.UI.Xaml.Markup.FullXamlMetadataProviderAttribute
-include Windows.UI.Xaml.Markup.MarkupExtensionReturnTypeAttribute
-include Windows.UI.Xaml.Media.Animation.ConditionallyIndependentlyAnimatableAttribute
-include Windows.UI.Xaml.Media.Animation.IndependentlyAnimatableAttribute
-include Windows.UI.Xaml.Media.Animation.ConditionallyIndependentlyAnimatableAttribute
-addition_exclude Windows.UI.Xaml.Media.Animation
</CsWinRTFilters>
<!--PkgMicrosoft_WinUI is set in in obj\*.csproj.nuget.g.props with TargetFramework condition, doesn't support multi-targeting-->
<PkgMicrosoft_WinUI Condition="'$(PkgMicrosoft_WinUI)'==''">$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.winui', '$(MicrosoftWinUIVersion)'))</PkgMicrosoft_WinUI>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
using WinRT;
using WinRT.Interop;
using WindowsRuntime.InteropServices;

#pragma warning disable CSWINRT3001

#nullable enable

Expand Down Expand Up @@ -150,8 +151,8 @@ private static ref readonly Guid IID_IDispatcherQueueHandler
[UnmanagedCallersOnly]
public static int QueryInterface(DispatcherQueueProxyHandler* @this, Guid* riid, void** ppvObject)
{
if (riid->Equals(IID.IID_IUnknown) ||
riid->Equals(IID.IID_IAgileObject) ||
if (riid->Equals(WellKnownInterfaceIIDs.IID_IUnknown) ||
riid->Equals(WellKnownInterfaceIIDs.IID_IAgileObject) ||
riid->Equals(IID_IDispatcherQueueHandler))
{
Interlocked.Increment(ref @this->referenceCount);
Expand Down Expand Up @@ -214,7 +215,7 @@ public static int Invoke(DispatcherQueueProxyHandler* @this)
// Register the exception with the global error handler. The failfast behavior
// is governed by the state of the 'UnhandledExceptionEventArgs.Handled' property.
// If 'Handled' is true the app continues running, else it failfasts.
ExceptionHelpers.ReportUnhandledError(e);
RestrictedErrorInfo.ReportUnhandledError(e);
}

return S_OK;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Threading;
using WinRT;
using WindowsRuntime.InteropServices;

#pragma warning disable CSWINRT3001

#nullable enable

Expand All @@ -13,9 +15,9 @@ namespace Windows.System;
public sealed partial class DispatcherQueueSynchronizationContext : SynchronizationContext
{
/// <summary>
/// The <see cref="IObjectReference"/> instance for the target dispatcher queue.
/// The <see cref="WindowsRuntimeObjectReference"/> instance for the target dispatcher queue.
/// </summary>
private readonly IObjectReference _objectReference;
private readonly WindowsRuntimeObjectReference _objectReference;

/// <summary>
/// Creates a new <see cref="DispatcherQueueSynchronizationContext"/> instance with the specified parameters.
Expand All @@ -26,15 +28,18 @@ public DispatcherQueueSynchronizationContext(global::Windows.System.DispatcherQu
{
ArgumentNullException.ThrowIfNull(dispatcherQueue);

_objectReference = ((IWinRTObject)dispatcherQueue).NativeObject;
if (!WindowsRuntimeComWrappersMarshal.TryUnwrapObjectReference(dispatcherQueue, out _objectReference!))
{
throw new ArgumentException(null, nameof(dispatcherQueue));
}
}

/// <summary>
/// Creates a new <see cref="DispatcherQueueSynchronizationContext"/> instance with the specified parameters.
/// </summary>
/// <param name="objectReference">The <see cref="IObjectReference"/> instance for the target dispatcher queue.</param>
/// <param name="objectReference">The <see cref="WindowsRuntimeObjectReference"/> instance for the target dispatcher queue.</param>
/// <exception cref="ArgumentNullException">Thrown if <paramref name="objectReference"/> is <see langword="null"/>.</exception>
private DispatcherQueueSynchronizationContext(IObjectReference objectReference)
private DispatcherQueueSynchronizationContext(WindowsRuntimeObjectReference objectReference)
{
ArgumentNullException.ThrowIfNull(objectReference);

Expand All @@ -51,21 +56,23 @@ public override unsafe void Post(SendOrPostCallback d, object? state)

try
{
void* thisPtr = (void*)_objectReference.ThisPtr;
_objectReference.AddRefUnsafe();

void* thisPtr = _objectReference.GetThisPtrUnsafe();
bool success;

// Note: we're intentionally ignoring the retval for 'DispatcherQueue::TryEnqueue'.
// This matches the behavior for the equivalent type on WinUI 3 as well.
hresult = ((delegate* unmanaged<void*, void*, byte*, int>)(*(void***)thisPtr)[7])(thisPtr, dispatcherQueueProxyHandler, (byte*)&success);

GC.KeepAlive(_objectReference);
}
finally
{
dispatcherQueueProxyHandler->Release();
_objectReference.ReleaseUnsafe();
}

ExceptionHelpers.ThrowExceptionForHR(hresult);

RestrictedErrorInfo.ThrowExceptionForHR(hresult);
}

/// <inheritdoc/>
Expand Down
4 changes: 1 addition & 3 deletions src/Projections/Windows.UI.Xaml/Windows.UI.Xaml.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\..\WinRT.Runtime\WinRT.Runtime.csproj" />
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<InternalsVisibleTo Include="UnitTest" />
<ProjectReference Include="..\..\Authoring\WinRT.SourceGenerator.Roslyn4120\WinRT.SourceGenerator.Roslyn4120.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" SetPlatform="Platform=x64" />
Expand All @@ -19,8 +19,6 @@
<CsWinRTFilters>
-exclude Windows
-include Windows.UI.Xaml
-exclude Windows.UI.Xaml.Media.Animation.ConditionallyIndependentlyAnimatableAttribute
-addition_exclude Windows.UI.Xaml.Media.Animation
</CsWinRTFilters>
</PropertyGroup>

Expand Down
9 changes: 2 additions & 7 deletions src/Projections/Windows/Windows.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,18 @@
<ProjectReference Include="..\..\WinRT.Runtime2\WinRT.Runtime2.csproj" />
<ProjectReference Include="..\..\cswinrt\cswinrt.vcxproj" />
<InternalsVisibleTo Include="UnitTest" />
<ProjectReference Include="..\..\Authoring\WinRT.SourceGenerator.Roslyn4120\WinRT.SourceGenerator.Roslyn4120.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" SetPlatform="Platform=x64" />
</ItemGroup>

<PropertyGroup>
<!-- TODO: -include Windows -->
<CsWinRTFilters>
-include Windows.Foundation.Metadata
-include Windows.Foundation.UniversalApiContract
-include Windows
# Exclude Windows.UI, Windows.UI.Text, Windows.UI.Xaml per Microsoft.Windows.SDK.WinUI.Contracts NuGet
# TODO: -include Windows.UI.Popups
-include Windows.UI.Popups
-exclude Windows.UI.Colors
-exclude Windows.UI.IColors
-exclude Windows.UI.ColorHelper
-exclude Windows.UI.IColorHelper
-exclude Windows.UI.ColorHelper
-exclude Windows.UI.IColorHelper
-exclude Windows.UI.IColorHelperStatics
-exclude Windows.UI.IColorHelperStatics2
#-exclude Windows.UI.Text (must include Windows.UI.Text to work around WinUI nuget issues)
Expand All @@ -38,7 +34,6 @@
-include Windows.UI.Text.FontWeight
-include Windows.UI.Text.IFontWeights
-include Windows.UI.Text.UnderlineType
-include Windows.UI.Xaml.Media.Animation.ConditionallyIndependentlyAnimatableAttribute
</CsWinRTFilters>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public static void IIteratorMethods(
// [2]: 'void*' (the native value that was retrieved)
CilLocalVariable loc_0_thisValue = new(interopReferences.WindowsRuntimeObjectReferenceValue.ToValueTypeSignature().Import(module));
CilLocalVariable loc_1_thisPtr = new(module.CorLibTypeFactory.Void.MakePointerType());
CilLocalVariable loc_2_currentNative = new(module.CorLibTypeFactory.Void.MakePointerType());
CilLocalVariable loc_2_currentNative = enumeratorType.TypeArguments[0].IsValueType ? new(enumeratorType.TypeArguments[0].Import(module)) : new(module.CorLibTypeFactory.Void.MakePointerType());

// Jump labels
CilInstruction ldloca_s_0_tryStart = new(Ldloca_S, loc_0_thisValue);
Expand Down Expand Up @@ -427,10 +427,18 @@ public static void InterfaceImpl(
{
{ Ldarg_0 },
{ Callvirt, interopReferences.IEnumerator1get_Current(elementType).Import(module) },
{ Ret }
}
};

// If the element type is a value type, we need to box it
if (elementType.IsValueType)
{
_ = get_IEnumeratorCurrentMethod.CilMethodBody.Instructions.Add(Box, elementType.Import(module).ToTypeDefOrRef());
}

// Add the return
_ = get_IEnumeratorCurrentMethod.CilMethodBody.Instructions.Add(Ret);

// Create the 'IEnumerator.Current' property
PropertyDefinition enumeratorCurrentProperty = new(
name: "System.Collections.IEnumerator.Current"u8,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ static MethodDefinition GetKeyOrValuePropertyAccessorMethod(
{
int typeArgumentIndex = name == "get_Key" ? 0 : 1;
TypeSignature typeArgument = keyValuePairType.TypeArguments[typeArgumentIndex];
TypeSignature typeArgumentAbiType = typeArgument.IsValueType ? typeArgument.Import(module).MakePointerType() : module.CorLibTypeFactory.Void.MakePointerType();

// Define the method as follows:
//
Expand All @@ -101,7 +102,7 @@ static MethodDefinition GetKeyOrValuePropertyAccessorMethod(
returnType: module.CorLibTypeFactory.Int32,
parameterTypes: [
module.CorLibTypeFactory.Void.MakePointerType(),
typeArgument.Import(module).MakePointerType()]))
typeArgumentAbiType]))
{
CustomAttributes = { InteropCustomAttributeFactory.UnmanagedCallersOnly(interopReferences, module) }
};
Expand Down Expand Up @@ -172,7 +173,8 @@ static MethodDefinition GetKeyOrValuePropertyAccessorMethod(
_ = instructions.Add(Ldarg_1);
_ = instructions.Add(Ldloca_S, loc_1_keyValuePair);
_ = instructions.Add(Call, get_MethodRef);
_ = instructions.Add(Stind_I);
// TODO call marshaler
// _ = instructions.Add(Stind_I);
_ = instructions.Add(Ldc_I4_0);
_ = instructions.Add(Stloc_0);
_ = instructions.Add(Leave_S, ldloc_0_returnHResult.CreateLabel());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@ public static unsafe class INotifyCollectionChangedMethods
/// <summary>
/// The <see cref="EventSource{T}"/> table for <see cref="INotifyCollectionChanged.CollectionChanged"/>.
/// </summary>
private static ConditionalWeakTable<WindowsRuntimeObject, NotifyCollectionChangedEventSource> CollectionChangedTable
private static ConditionalWeakTable<WindowsRuntimeObject, NotifyCollectionChangedEventHandlerEventSource> CollectionChangedTable
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
get
{
[MethodImpl(MethodImplOptions.NoInlining)]
static ConditionalWeakTable<WindowsRuntimeObject, NotifyCollectionChangedEventSource> MakeCollectionChangedTable()
static ConditionalWeakTable<WindowsRuntimeObject, NotifyCollectionChangedEventHandlerEventSource> MakeCollectionChangedTable()
{
_ = Interlocked.CompareExchange(ref field, [], null);

Expand All @@ -71,11 +71,11 @@ static ConditionalWeakTable<WindowsRuntimeObject, NotifyCollectionChangedEventSo
}

/// <see cref="INotifyCollectionChanged.CollectionChanged"/>
public static NotifyCollectionChangedEventSource CollectionChanged(WindowsRuntimeObject thisObject, WindowsRuntimeObjectReference thisReference)
public static NotifyCollectionChangedEventHandlerEventSource CollectionChanged(WindowsRuntimeObject thisObject, WindowsRuntimeObjectReference thisReference)
{
return CollectionChangedTable.GetOrAdd(
key: thisObject,
valueFactory: static (_, thisReference) => new NotifyCollectionChangedEventSource(thisReference, 6),
valueFactory: static (_, thisReference) => new NotifyCollectionChangedEventHandlerEventSource(thisReference, 6),
factoryArgument: thisReference);
}
}
Expand Down
Loading
Loading