Это работает для вас, чтобы создать простое отображение? ArrayList не является универсальным, но вы можете вместо него создать собственный объект.
var mapper = new System.Collections.Generic.Dictionary<string, System.Type>();
mapper.Add("show-about-box", typeof(MyApp.Forms.AboutBox));
Затем вы можете использовать отражение для создания экземпляра класса, используя такой код:
// Create an instance using [Activator.CreateInstance][1].
System.Type toCreate = mapper["show-about-box"];
Object o = Activator.CreateInstance(toCreate);
// Or, using try-get to be safer
System.Type toCreate = null;
if ( mapper.TryGetValue("show-about-box", out toCreate) ) {
Object o = Activator.CreateInstance(toCreate);
}