Skip to content

Commit

Permalink
Non generic mapping, Map<TSrc,TDest>(TSrc src, TDest dest), fixing bu…
Browse files Browse the repository at this point in the history
…gs GitHub #4,#5
  • Loading branch information
anisimovyuriy committed Jun 13, 2015
1 parent 9b486f9 commit ef9a434
Show file tree
Hide file tree
Showing 40 changed files with 2,208 additions and 76 deletions.
14 changes: 14 additions & 0 deletions ExpressMapper NET40/CollectionExtentions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;

namespace ExpressMapper
{
public static class CollectionExtentions
{
public static Collection<T> ToCollection<T>(this IList<T> source)
{
var collection = new Collection<T>(source);
return collection;
}
}
}
8 changes: 8 additions & 0 deletions ExpressMapper NET40/DefaultMappingContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace ExpressMapper
{
public class DefaultMappingContext<T, TN> : IMappingContext<T,TN>
{
public T Source { get; set; }
public TN Destination { get; set; }
}
}
6 changes: 6 additions & 0 deletions ExpressMapper NET40/ExpressMapper NET40.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,14 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CollectionExtentions.cs" />
<Compile Include="CollectionTypes.cs" />
<Compile Include="DefaultMappingContext.cs" />
<Compile Include="IMappingContext.cs" />
<Compile Include="MapNotImplemented.cs" />
<Compile Include="NullCheckNestedMemberVisitor.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="SubstituteParameterVisitor.cs" />
<Compile Include="TypeMapper.cs" />
<Compile Include="ITypeMapper.cs" />
Expand Down
8 changes: 5 additions & 3 deletions ExpressMapper NET40/ICustomTypeMapper.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace ExpressMapper
using System;

namespace ExpressMapper
{
public interface ICustomTypeMapper
{
Expand All @@ -7,8 +9,8 @@ public interface ICustomTypeMapper
/// <summary>
/// Interface to implement custom mapperd
/// </summary>
public interface ICustomTypeMapper<in T, out TN> : ICustomTypeMapper
public interface ICustomTypeMapper<T, TN> : ICustomTypeMapper
{
TN Map(T src);
TN Map(IMappingContext<T, TN> context);
}
}
8 changes: 8 additions & 0 deletions ExpressMapper NET40/IMappingContext.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace ExpressMapper
{
public interface IMappingContext<T, TN>
{
T Source { get; set; }
TN Destination { get; set; }
}
}
1 change: 0 additions & 1 deletion ExpressMapper NET40/IMemberConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ public interface IMemberConfiguration<T, TN>
IMemberConfiguration<T, TN> Member<TMember, TNMember>(Expression<Func<TN, TNMember>> dest, Expression<Func<T, TMember>> src);
IMemberConfiguration<T, TN> Function<TMember, TNMember>(Expression<Func<TN, TNMember>> dest, Func<T, TMember> src);
IMemberConfiguration<T, TN> Ignore<TMember>(Expression<Func<TN, TMember>> dest);
void Custom(ICustomTypeMapper<T, TN> customTypeMapper);
}
}
9 changes: 7 additions & 2 deletions ExpressMapper NET40/ITypeMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,15 @@ namespace ExpressMapper
public interface ITypeMapper
{
Func<object, object> GetNonGenericMapFunc();
List<Expression> GetMapExpressions();
List<Expression> GetMapExpressions(bool withDestinationInstance = false);
IList ProcessCollection(IEnumerable src);
IEnumerable ProcessArray(IEnumerable src);
IQueryable ProcessQueryable(IEnumerable src);
IList ProcessCollection(IEnumerable src, IList dest);
IEnumerable ProcessArray(IEnumerable src, IEnumerable dest);
IQueryable ProcessQueryable(IEnumerable src, IQueryable dest);
void Compile();
void CompileDestinationInstance();
}

/// <summary>
Expand All @@ -24,7 +28,8 @@ public interface ITypeMapper
/// <typeparam name="TN">destination</typeparam>
public interface ITypeMapper<T, TN> : ITypeMapper
{
TN MapTo(T obj);
TN MapTo(T src);
TN MapTo(T src, TN dest);
void Custom(ICustomTypeMapper<T, TN> customTypeMapper);
void Ignore<TMember>(Expression<Func<TN, TMember>> left);
void MapMember<TMember, TNMember>(Expression<Func<TN, TNMember>> left, Expression<Func<T, TMember>> right);
Expand Down
Loading

0 comments on commit ef9a434

Please sign in to comment.