Я думаю, вы должны изменить свой дизайн. Вы можете использовать абстрактный шаблон фабрики . Использование отражения ухудшит производительность.
Вот код для фабрики.
public abstract class MyStore {
public abstract string Name { get; }
public abstract void AddItem(int id, string name);
}
Вы можете рассмотреть возможность использования интерфейса, если ваш абстрактный класс не имеет кода.
Затем создайте магазин покупателя.
public class CustomerStore : MyStore, IEnumerable<Customer> {
List<Customer> list = new List<Customer>();
public override string Name { get { return "Customer Store"; } }
public override void AddItem(int id, string name) {
list.Add(new Customer(id, name));
}
public IEnumerator<Customer> GetEnumerator() {
return list.GetEnumerator();
}
}
Использование
foreach (MyStore store in List<MyStore>)
store.AddItem(0, "None");
Если вы хотите рассмотреть тип магазина, используйте
switch (store.Name) {
case "Customer Store":
SomeMethod((CustomerStore)store);
break;
default:
throw new WhatEverException();
}