Мне хотелось предложить шаблон стратегии, но вам может потребоваться небольшое изменение. Рассмотрим написание метода в классе TextFrame, давайте назовем его putContent (MetaData).
Затем создайте подклассы TextFrame, каждый из которых представляет отдельный тип фрейма. Каждый подкласс переопределяет метод putContent (Metadata) и выполняет соответствующую логику.
Пример псевдокода для TPE1:
Metadata putContent(MetaData md){
md.AlbumArtist = Content;
return md;
}
Ваш код метаданных изменится на:
var metaData = new MetaData();
foreach (var frame in textFrames)
{
metaData = frame.putContent(metaData);
}
return metaData;
Конечно, для создания текстовых фреймов самим потребуется фабрика, так что это не конец истории.