You can call Advise inside the class and use this.
This test works for on my Windows 10 22H2 OS :
public partial class NetworkListManagerEventsClass : INetworkListManagerEvents
{
private INetworkListManager nlm;
private IConnectionPoint cp;
private int nCookie = 0;
public NetworkListManagerEventsClass()
{
nlm = new NetworkListManager();
IConnectionPointContainer cpc = (IConnectionPointContainer)nlm;
if (cpc != null)
{
Guid guid = typeof(INetworkListManagerEvents).GUID;
cpc.FindConnectionPoint(ref guid, out cp);
cp.Advise(this, out nCookie);
}
}
~NetworkListManagerEventsClass()
{
cp.Unadvise(nCookie);
}
void INetworkListManagerEvents.ConnectivityChanged(NLM_CONNECTIVITY newConnectivity)
{
if ((newConnectivity & NLM_CONNECTIVITY.NLM_CONNECTIVITY_DISCONNECTED) != 0)
{
System.Diagnostics.Debug.WriteLine("Disconnected");
}
if ((newConnectivity & NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV4_LOCALNETWORK) != 0 ||
(newConnectivity & NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV6_LOCALNETWORK) != 0)
{
System.Diagnostics.Debug.WriteLine("Local Network");
}
if ((newConnectivity & NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV4_INTERNET) != 0 ||
(newConnectivity & NLM_CONNECTIVITY.NLM_CONNECTIVITY_IPV6_INTERNET) != 0)
{
System.Diagnostics.Debug.WriteLine("Internet");
}
}
}