Является ли плохой практикой передавать "this" в качестве параметра внутри своего собственного конструктора?

У меня есть этот BdlTabItem, который получает параметр типа DockableUserControl и хотел бы знать, является ли неправильной практикой создание круговой ссылки между ними с помощью uc.TabItem = this и new BdlDockableWindow(this) до того, как конструктор закончит.

Я знаю, что это поведение можно считать очень неудачным с неуправляемым собственным кодом (С++). Поэтому, хотя у меня не было никаких предупреждений или ошибок, я спрашиваю, должен ли я это делать или нет.

public BdlTabItem(BdlTabControl parent, DockableUserControl uc, string title)
    {
        TabControlParent = parent;
        UserControl = uc;
        WindowParent = new BdlDockableWindow(this);

        this.Content = UserControl;

        UserControl.TabItem = this;
    }

Ответ 1

Это приемлемо, но вызывает вопросы. Почему элемент табуляции создает экземпляр нового WindowParent, но элемент управления родительского вклада не имеет ссылки на него? Или почему не является родителем окна свойства в передаваемом элементе управления пользователя? Похоже, что поведение должно быть в другом месте.