public bool CheckMemberTypeCompatability( AbstractCrystallonEntity pEntity ) { // NO CURRENT MEMBER TYPE if (MemberType == null) { if ( typeof(GroupCrystallonEntity).IsAssignableFrom(pEntity.GetType()) ) { // ------- HANDLE GROUP-TYPE OBJECTS MemberType = (pEntity as GroupCrystallonEntity).MemberType; } else if ( typeof(CardCrystallonEntity).IsAssignableFrom(pEntity.GetType()) ) { // - HANDLE CARD-TYPE OBJECTS MemberType = typeof(CardCrystallonEntity); } } else { Type t = null; if ( typeof(GroupCrystallonEntity).IsAssignableFrom(pEntity.GetType()) ) { // ------- HANDLE GROUP-TYPE OBJECTS t = (pEntity as GroupCrystallonEntity).MemberType; } else if ( typeof(CardCrystallonEntity).IsAssignableFrom(pEntity.GetType()) ) { // - HANDLE CARD-TYPE OBJECTS t = typeof(CardCrystallonEntity); } return this.MemberType.IsAssignableFrom(t); } return true; }