Я не пробовал этого, но, возможно, вы могли бы использовать Type.GetType, например ...
var task = (ITask)ObjectFactory.GetInstance(Type.GetType("Assembly.Qualified.Name.Of.Type"));
Предполагается, что вы знаете пространства сборки / имен типов.
см. http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx
Другая возможность ...
Добавьте в свой сканер
Scan(x =>
{
x.AddAllTypesOf<ITask>();
}
Затем в некотором классе резольвера ...
private Dictionary<string, Type> typeLookup;
public ITask GetInstance(string typeName)
{
if (typeLookup == null)
{
typeLookup = new Dictionary<string, Type>();
var tasks = ObjectFactory.GetAllInstances<ITask>();
foreach (var task in tasks)
{
typeLookup.Add(task.GetType().Name, task.GetType());
}
}
return (ITask)ObjectFactory.GetInstance(typeLookup[typeName]);
}