source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Platform/Apple/SKEventProxy.cs (26 lines of code) (raw):
using System;
namespace SkiaSharp.Views.Maui.Platform;
internal class SKEventProxy<TVirtualView, TPlatformView>
where TVirtualView : class
where TPlatformView : class
{
private WeakReference<TVirtualView>? virtualView;
protected TVirtualView? VirtualView =>
virtualView is not null && virtualView.TryGetTarget(out var v) ? v : null;
public void Connect(TVirtualView virtualView, TPlatformView platformView)
{
this.virtualView = new(virtualView);
OnConnect(virtualView, platformView);
}
protected virtual void OnConnect(TVirtualView virtualView, TPlatformView platformView)
{
}
public void Disconnect(TPlatformView platformView)
{
virtualView = null;
OnDisconnect(platformView);
}
protected virtual void OnDisconnect(TPlatformView platformView)
{
}
}