protected BaseToolWindow(IMessagePropagator messagePropagator)
        {
            _messagePropagator = messagePropagator;

            ToolWindowAttribute toolWindowAttribute =
                this.GetType().GetCustomAttribute <ToolWindowAttribute>();

            Id    = toolWindowAttribute.DisplayName;
            Title = toolWindowAttribute.DisplayName;
        }
        public static List <Type> GetAllToolWindows(AppDomain domain)
        {
            List <Type> list = new List <Type>();

            foreach (Assembly assembly in domain.GetAssemblies())
            {
                foreach (Type type in assembly.GetTypes())
                {
                    ToolWindowAttribute toolWindowAttribute =
                        type.GetCustomAttribute <ToolWindowAttribute>();

                    if (toolWindowAttribute != null &&
                        type.IsSubclassOf(typeof(BaseToolWindow)))
                    {
                        list.Add(type);
                    }
                }
            }


            return(list);
        }