Отражение или XML-сериализация - это то, что вы ищете.
Используя отражение, вы можете искать тип, используя что-то вроде этого
public IYourInterface GetClass(string className)
{
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type type in asm.GetTypes())
{
if (type.Name == className)
return Activator.CreateInstance(type) as IYourInterface;
}
}
return null;
}
Обратите внимание, что это будет проходить через все сборки. Возможно, вы захотите уменьшить его, чтобы включить только текущую сборку.
Для присвоения значений свойств вы также используете отражение. Что-то вроде
IYourInterface o = GetClass("class1");
o.GetType().GetProperty("prop1").SetValue(o, "foo", null);
Хотя рефлексия может быть наиболее гибким решением, вы также должны взглянуть на XML-сериализацию , чтобы пропустить тяжелую работу самостоятельно.