Array Property, TList, TStringList ou TCollection, etc (Delphi Win32)
Estou desenvolvendo vários componentes e, regularmente, encontro a necessidade de ter uma propriedade que tenha um relacionamento "um para muitos", membro de componente para propriedade. Os componentes geralmente são componentes visuais, mas nem sempre, e às vezes precisam ser registrados no IDE (ou seja, usar o Inspetor de propriedades), mas nem sempre. Acho que não tenho certeza de qual rota seguir ao configurar essas propriedades - usando uma propriedade de matriz, um TList, um TStringList, um TCollection ou algo completamente diferente (talvez uma nova classe que herda de um deles).
Quais são as "melhores práticas" / diretrizes para usar quando / onde?