本文整理汇总了C#中IMappingEngineRunner类的典型用法代码示例。如果您正苦于以下问题:C# IMappingEngineRunner类的具体用法?C# IMappingEngineRunner怎么用?C# IMappingEngineRunner使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IMappingEngineRunner类属于命名空间,在下文中一共展示了IMappingEngineRunner类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var sourceElementType = TypeHelper.GetElementType(context.SourceValue.GetType());
var destinationElementType = TypeHelper.GetElementType(context.DestinationValue.GetType());
var equivilencyExpression = GetEquivilentExpression(context);
var sourceEnumerable = context.SourceValue as IEnumerable;
var destEnumerable = (IEnumerable)context.DestinationValue;
var destItems = destEnumerable.Cast<object>().ToList();
var sourceItems = sourceEnumerable.Cast<object>().ToList();
var compareSourceToDestination = sourceItems.ToDictionary(s => s, s => destItems.FirstOrDefault(d => equivilencyExpression.IsEquivlent(s, d)));
var actualDestType = destEnumerable.GetType();
var addMethod = actualDestType.GetMethod("Add");
foreach (var keypair in compareSourceToDestination)
{
if (keypair.Value == null)
addMethod.Invoke(destEnumerable, new[] { Mapper.Map(keypair.Key, sourceElementType, destinationElementType) });
else
Mapper.Map(keypair.Key, keypair.Value, sourceElementType, destinationElementType);
}
var removeMethod = actualDestType.GetMethod("Remove");
foreach (var removedItem in destItems.Except(compareSourceToDestination.Values))
removeMethod.Invoke(destEnumerable, new[] { removedItem });
return destEnumerable;
}
开发者ID:yao-yi,项目名称:Automapper.Collection,代码行数:30,代码来源:EquivlentExpressionAddRemoveCollectionMapper.cs
示例2: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var sourceDelegateType = context.SourceType.GetGenericArguments()[0];
var destDelegateType = context.DestinationType.GetGenericArguments()[0];
var expression = (LambdaExpression) context.SourceValue;
if (sourceDelegateType.GetGenericTypeDefinition() != destDelegateType.GetGenericTypeDefinition())
throw new AutoMapperMappingException("Source and destination expressions must be of the same type.");
var parameters = expression.Parameters.ToArray();
var body = expression.Body;
for (int i = 0; i < expression.Parameters.Count; i++)
{
var sourceParamType = sourceDelegateType.GetGenericArguments()[i];
var destParamType = destDelegateType.GetGenericArguments()[i];
if (sourceParamType == destParamType)
continue;
var typeMap = mapper.ConfigurationProvider.ResolveTypeMap(destParamType, sourceParamType);
if (typeMap == null)
throw new AutoMapperMappingException(
$"Could not find type map from destination type {destParamType} to source type {sourceParamType}. Use CreateMap to create a map from the source to destination types.");
var oldParam = expression.Parameters[i];
var newParam = Expression.Parameter(typeMap.SourceType, oldParam.Name);
parameters[i] = newParam;
var visitor = new MappingVisitor(typeMap, oldParam, newParam);
body = visitor.Visit(body);
}
return Expression.Lambda(body, parameters);
}
开发者ID:AnatolyKulakov,项目名称:AutoMapper,代码行数:34,代码来源:ExpressionMapper.cs
示例3: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (IsDataReader(context))
{
var dataReader = (IDataReader)context.SourceValue;
var destinationElementType = TypeHelper.GetElementType(context.DestinationType);
var buildFrom = CreateBuilder(destinationElementType, dataReader);
var results = ObjectCreator.CreateList(destinationElementType);
while (dataReader.Read())
{
results.Add(buildFrom(dataReader));
}
return results;
}
if (IsDataRecord(context))
{
var dataRecord = context.SourceValue as IDataRecord;
var buildFrom = CreateBuilder(context.DestinationType, dataRecord);
var result = buildFrom(dataRecord);
MapPropertyValues(context, mapper, result);
return result;
}
return null;
}
开发者ID:JonKruger,项目名称:AutoMapper,代码行数:31,代码来源:DataReaderMapper.cs
示例4: ResolveValue
public object ResolveValue(ResolutionContext context, IMappingEngineRunner mappingEngine)
{
var ctorArgs = new List<object>();
foreach (var map in CtorParams)
{
var result = map.ResolveValue(context);
var sourceType = result.Type;
var destinationType = map.Parameter.ParameterType;
var typeMap = mappingEngine.ConfigurationProvider.ResolveTypeMap(result, destinationType);
Type targetSourceType = typeMap != null ? typeMap.SourceType : sourceType;
var newContext = context.CreateTypeContext(typeMap, result.Value, null, targetSourceType,
destinationType);
if (typeMap == null && map.Parameter.IsOptional)
{
object value = map.Parameter.DefaultValue;
ctorArgs.Add(value);
}
else
{
var value = mappingEngine.Map(newContext);
ctorArgs.Add(value);
}
}
return _runtimeCtor.Value(ctorArgs.ToArray());
}
开发者ID:DeanMilojevic,项目名称:AutoMapper,代码行数:32,代码来源:ConstructorMap.cs
示例5: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
bool toEnum = false;
Type enumSourceType = TypeHelper.GetEnumerationType(context.SourceType);
Type enumDestinationType = TypeHelper.GetEnumerationType(context.DestinationType);
if (EnumToStringMapping(context, ref toEnum))
{
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
if (toEnum)
{
var stringValue = context.SourceValue.ToString();
if (string.IsNullOrEmpty(stringValue))
{
return mapper.CreateObject(context);
}
return Enum.Parse(enumDestinationType, stringValue, true);
}
return Enum.GetName(enumSourceType, context.SourceValue);
}
if (EnumToEnumMapping(context))
{
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
if (!Enum.IsDefined(enumSourceType, context.SourceValue))
{
return Enum.ToObject(enumDestinationType, context.SourceValue);
}
#if !SILVERLIGHT && !__ANDROID__
if (!Enum.GetNames(enumDestinationType).Contains(context.SourceValue.ToString()))
{
Type underlyingSourceType = Enum.GetUnderlyingType(enumSourceType);
var underlyingSourceValue = Convert.ChangeType(context.SourceValue, underlyingSourceType);
return Enum.ToObject(context.DestinationType, underlyingSourceValue);
}
#endif
return Enum.Parse(enumDestinationType, Enum.GetName(enumSourceType, context.SourceValue), true);
}
if (EnumToUnderlyingTypeMapping(context, ref toEnum))
{
if (toEnum)
{
return Enum.Parse(enumDestinationType, context.SourceValue.ToString(), true);
}
return Convert.ChangeType(context.SourceValue, context.DestinationType, null);
}
return null;
}
开发者ID:rkania,项目名称:AutoMapper,代码行数:59,代码来源:EnumMapper.cs
示例6: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context.SourceValue == null)
{
return mapper.FormatValue(context.CreateValueContext(null));
}
return mapper.FormatValue(context);
}
开发者ID:sclcwwl,项目名称:Gimela,代码行数:8,代码来源:StringMapper.cs
示例7: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var mapperToUse = _mappers.First(objectMapper => objectMapper.IsMatch(context, mapper));
object mappedObject = mapperToUse.Map(context, mapper);
context.TypeMap.AfterMap(context.SourceValue, mappedObject);
return mappedObject;
}
开发者ID:paulbatum,项目名称:automapper,代码行数:8,代码来源:TypeMapMapper.cs
示例8: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
Func<object> converter = GetConverter(context);
return converter != null ? converter() : null;
}
开发者ID:dennyli,项目名称:HandySolution,代码行数:9,代码来源:TypeConverterMapper.cs
示例9: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context.SourceValue == null && !mapper.ShouldMapSourceCollectionAsNull(context))
{
return mapper.CreateObject(context);
}
return context.SourceValue;
}
开发者ID:DeanMilojevic,项目名称:AutoMapper,代码行数:9,代码来源:AssignableArrayMapper.cs
示例10: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
return context.SourceValue;
}
开发者ID:JonKruger,项目名称:AutoMapper,代码行数:9,代码来源:AssignableMapper.cs
示例11: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var typeMap = mapper.ConfigurationProvider.FindClosedGenericTypeMapFor(context);
var newContext = context.CreateTypeContext(typeMap, context.SourceValue, context.DestinationValue, context.SourceType,
context.DestinationType);
return mapper.Map(newContext);
}
开发者ID:gonzalogilrepositorio,项目名称:Proyecto-ComIT,代码行数:9,代码来源:OpenGenericMapper.cs
示例12: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var source = context.SourceValue;
var sourceType = source.GetType();
var sourceTypeDetails = new TypeDetails(sourceType, _ => true, _ => true);
var membersDictionary = sourceTypeDetails.PublicReadAccessors.ToDictionary(p => p.Name, p => p.GetMemberValue(source));
var newContext = context.CreateTypeContext(null, membersDictionary, context.DestinationValue, membersDictionary.GetType(), context.DestinationType);
return mapper.Map(newContext);
}
开发者ID:DeanMilojevic,项目名称:AutoMapper,代码行数:9,代码来源:StringDictionaryMapper.cs
示例13: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
TypeConverter typeConverter = GetTypeConverter(context);
return typeConverter.ConvertTo(context.SourceValue, context.DestinationType);
}
开发者ID:paulbatum,项目名称:automapper,代码行数:10,代码来源:TypeConverterMapper.cs
示例14: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var newSource = context.TypeMap.Substitution(context.SourceValue);
var typeMap = mapper.ConfigurationProvider.ResolveTypeMap(newSource.GetType(), context.DestinationType);
var substitutionContext = context.CreateTypeContext(typeMap, newSource, context.DestinationValue,
newSource.GetType(), context.DestinationType);
return mapper.Map(substitutionContext);
}
开发者ID:DeanMilojevic,项目名称:AutoMapper,代码行数:10,代码来源:TypeMapObjectMapperRegistry.cs
示例15: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context == null) throw new ArgumentNullException("context");
if (mapper == null) throw new ArgumentNullException("mapper");
if (context.SourceValue == null)
{
return mapper.FormatValue(context.CreateValueContext(null));
}
return mapper.FormatValue(context);
}
开发者ID:firestrand,项目名称:AutoMapper,代码行数:11,代码来源:StringMapper.cs
示例16: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
context.TypeMap.Seal();
var mapperToUse = _mappers.First(objectMapper => objectMapper.IsMatch(context, mapper));
// check whether the context passes conditions before attempting to map the value (depth check)
var mappedObject = !context.TypeMap.ShouldAssignValue(context) ? null : mapperToUse.Map(context, mapper);
return mappedObject;
}
开发者ID:CyranoChen,项目名称:Arsenalcn,代码行数:11,代码来源:TypeMapMapper.cs
示例17: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var enumDestType = TypeHelper.GetEnumerationType(context.DestinationType);
if (context.SourceValue == null)
{
return mapper.CreateObject(context);
}
return Enum.Parse(enumDestType, context.SourceValue.ToString(), true);
}
开发者ID:CyranoChen,项目名称:Arsenalcn,代码行数:11,代码来源:FlagsEnumMapper.cs
示例18: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
var contextTypePair = new TypePair(context.SourceType, context.DestinationType);
Func<TypePair, IObjectMapper> missFunc = tp => context.Engine.ConfigurationProvider.GetMappers().FirstOrDefault(m => m.IsMatch(context));
var typeMap = mapper.ConfigurationProvider.CreateTypeMap(context.SourceType, context.DestinationType, _profileName);
context = context.CreateTypeContext(typeMap, context.SourceValue, context.DestinationValue, context.SourceType, context.DestinationType);
var map = (context.Engine as MappingEngine)._objectMapperCache.GetOrAdd(contextTypePair, missFunc);
return map.Map(context, mapper);
}
开发者ID:DeanMilojevic,项目名称:AutoMapper,代码行数:11,代码来源:CreateMapBasedOnCriteriaMapper.cs
示例19: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (!IsMatch(context) || context.SourceValue == null)
return null;
var nvc = new NameValueCollection();
var source = context.SourceValue as NameValueCollection;
foreach (var s in source.AllKeys)
nvc.Add(s, source[s]);
return nvc;
}
开发者ID:NicoGBN,项目名称:AutoMapper,代码行数:12,代码来源:NameValueCollectionMapper.cs
示例20: Map
public object Map(ResolutionContext context, IMappingEngineRunner mapper)
{
if (context == null) throw new ArgumentNullException("context");
if (mapper == null) throw new ArgumentNullException("mapper");
if (context.SourceValue == null && !mapper.ShouldMapSourceValueAsNull(context))
{
return mapper.CreateObject(context);
}
return context.SourceValue;
}
开发者ID:firestrand,项目名称:AutoMapper,代码行数:12,代码来源:AssignableMapper.cs
注:本文中的IMappingEngineRunner类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论