У меня есть набор классов, каждый из которых является другим strategy для выполнения той же работы.
namespace BigCorp.SuperApp
{
public class BaseClass { }
public class ClassA : BaseClass { }
public class ClassB : BaseClass { }
}
Выбор стратегии использования настраивается. Я хочу настроить только имя класса "ClassB" вместо полного имени типа "BigCorp.SuperApp.ClassB" в файле app.config.
<appConfig>
<SuperAppConfig>
<Handler name="ClassB" />
</SuperAppConfig>
</appConfig>
Однако вызовы отражения терпят неудачу, потому что они ожидают полного имени типа, особенно
Type t = Type.GetType("ClassB"); // results in t == null
BaseClass c = Activator.CreateInstance(t) as BaseClass; // fails
Как я могу заставить это работать при настройке только имени класса? Объединить пространство имен с именем класса для полного имени типа? Есть ли другой рефлекторный вызов, который работает?
Если вы считаете, что это бесполезно, и я должен ожидать, что конфигурация будет содержать полное имя типа, я открыт для этого решения! Просто предоставьте обоснование, чтобы убедить меня.
(я не загружаю тип из-за пределов этой сборки/пространства имен)