Hum, this is a tricky one, the code below isn't tested (I am writing this as I think of the solution) but should point you in the write direction.
public class MyCrazyType : SitecoreFieldTypeMapper
{
public override object GetFieldValue(string fieldValue, Mapper.Sc.Configuration.SitecoreFieldConfiguration config, SitecoreDataMappingContext context)
{
using (new VersionCountDisabler())
{
return base.GetFieldValue(fieldValue, config, context);
}
}
public override bool CanHandle(Mapper.Configuration.AbstractPropertyConfiguration configuration, Context context)
{
//this will mean this handle only works for this type
return configuration.PropertyInfo.PropertyType == typeof (ServiceMapping);
}
}
Using this Glass will map the an empty item to the target type.
You will need to register the handler with Glass, see this tutorial: http://glass.lu/docs/tutorial/sitecore/tutorial19/tutorial19.html