да, для таких случаев WeakLinks не прокатит
Прокатит, но надо немного по другому, в кострукторе получать контейнер, из него получать DebuggerIdGenerator, присваивать свойству генератора по слабой ссылке и при запросе генератора проверять, если там нулл(был сброшен в контейнере), то брать из контейнера, если нет то юзать его.