private DomainParticipant GetParticipant() { IntPtr ptrParticipant = UnsafeNativeMethods.GetParticipant(_native); DomainParticipant participant = null; if (!ptrParticipant.Equals(IntPtr.Zero)) { IntPtr ptr = DomainParticipant.NarrowBase(ptrParticipant); Entity entity = EntityManager.Instance.Find(ptr); if (entity != null) { participant = (DomainParticipant)entity; } else { participant = new DomainParticipant(ptrParticipant); EntityManager.Instance.Add(ptrParticipant, participant); } } return(participant); }