public virtual Projection FinalizeProjection() { EnsureNoInvalidMappings(); var generator = this.mapper.ProjectionGeneratorFactory.GetGenerator(this.mapper); var expression = generator.GetProjection(this); var projection = CreateProjectionInstance(this.SourceType, this.DestinationType, expression); mapper.RegisterProjection(projection); return(projection); }