public object Map(Type type, XElement element, IMappingStrategy strategy = null) { var instance = _typeFactory.InstanceOf(type); // since the type param might be an interface, and we need the concrete type var concreteType = instance.GetType(); strategy = strategy ?? _strategyManager.GetStrategyFor(type); var mapping = _mappingFactory.CreateMapping(concreteType, element, strategy); mapping.Apply(instance); return(instance); }