Как насчет создания методов расширения для класса Control?
(На самом деле, соответствующий абстрактный базовый класс .NET, подкласс класса Control, зависит от пользовательского интерфейса. Используете ли вы Windows Forms или XAML или ASP.NET?)
Что-то вроде:
public static class MyPositionExtensions{
public static void SaveState(this Control c){ /* Save position to xml-file */ }
public static void RestoreState(this Control c){ /* Load from xml-file */ }
}
Тогда в вашем закрытии просто цикл, как
foreach(var c in MyControls)c.SaveState();
и открытие как
foreach(var c in MyControls)c.RestoreState();