diff --git a/src/Mapster.DependencyInjection/ServiceMapper.cs b/src/Mapster.DependencyInjection/ServiceMapper.cs index bfaddb3d..03c8fc3d 100644 --- a/src/Mapster.DependencyInjection/ServiceMapper.cs +++ b/src/Mapster.DependencyInjection/ServiceMapper.cs @@ -13,7 +13,7 @@ public ServiceMapper(IServiceProvider serviceProvider, TypeAdapterConfig config) _serviceProvider = serviceProvider; } - public override TypeAdapterBuilder From(TSource source) + public override ITypeAdapterBuilder From(TSource source) { return base.From(source) .AddParameters(DI_KEY, _serviceProvider); diff --git a/src/Mapster.EF6/TypeAdapterBuilderExtensions.cs b/src/Mapster.EF6/TypeAdapterBuilderExtensions.cs index 748b3a21..847d2068 100644 --- a/src/Mapster.EF6/TypeAdapterBuilderExtensions.cs +++ b/src/Mapster.EF6/TypeAdapterBuilderExtensions.cs @@ -12,7 +12,7 @@ namespace Mapster { public static class TypeAdapterBuilderExtensions { - public static TypeAdapterBuilder EntityFromContext(this TypeAdapterBuilder builder, IObjectContextAdapter context) + public static ITypeAdapterBuilder EntityFromContext(this ITypeAdapterBuilder builder, IObjectContextAdapter context) { const string DB_KEY = "Mapster.EF6.db"; return builder diff --git a/src/Mapster.EFCore/TypeAdapterBuilderExtensions.cs b/src/Mapster.EFCore/TypeAdapterBuilderExtensions.cs index a6253980..11fa744d 100644 --- a/src/Mapster.EFCore/TypeAdapterBuilderExtensions.cs +++ b/src/Mapster.EFCore/TypeAdapterBuilderExtensions.cs @@ -12,7 +12,7 @@ namespace Mapster { public static class TypeAdapterBuilderExtensions { - public static TypeAdapterBuilder EntityFromContext(this TypeAdapterBuilder builder, DbContext context) + public static ITypeAdapterBuilder EntityFromContext(this ITypeAdapterBuilder builder, DbContext context) { const string dbKey = "Mapster.EFCore.db"; return builder diff --git a/src/Mapster/Interfaces/IMapper.cs b/src/Mapster/Interfaces/IMapper.cs index 4ef3d2b0..f32b4b51 100644 --- a/src/Mapster/Interfaces/IMapper.cs +++ b/src/Mapster/Interfaces/IMapper.cs @@ -7,7 +7,7 @@ namespace MapsterMapper public interface IMapper { TypeAdapterConfig Config { get; } - TypeAdapterBuilder From(TSource source); + ITypeAdapterBuilder From(TSource source); TDestination Map(object source); TDestination Map(TSource source); TDestination Map(TSource source, TDestination destination); diff --git a/src/Mapster/Interfaces/ITypeAdapterBuilder.cs b/src/Mapster/Interfaces/ITypeAdapterBuilder.cs new file mode 100644 index 00000000..8dd9ef21 --- /dev/null +++ b/src/Mapster/Interfaces/ITypeAdapterBuilder.cs @@ -0,0 +1,25 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq.Expressions; +using System.Runtime.CompilerServices; + +namespace Mapster +{ + public interface ITypeAdapterBuilder : IAdapterBuilder + { + [SuppressMessage("ReSharper", "ExplicitCallerInfoArgument")] + ITypeAdapterBuilder ForkConfig(Action action, +#if !NET40 + [CallerFilePath] +#endif + string key1 = "", +#if !NET40 + [CallerLineNumber] +#endif + int key2 = 0); + ITypeAdapterBuilder AddParameters(string name, object value); + Expression> CreateMapExpression(); + Expression> CreateMapToTargetExpression(); + Expression> CreateProjectionExpression(); + } +} diff --git a/src/Mapster/Mapper.cs b/src/Mapster/Mapper.cs index ccb075b1..d63f6213 100644 --- a/src/Mapster/Mapper.cs +++ b/src/Mapster/Mapper.cs @@ -16,9 +16,9 @@ public Mapper(TypeAdapterConfig config) Config = config; } - public virtual TypeAdapterBuilder From(TSource source) + public virtual ITypeAdapterBuilder From(TSource source) { - return new TypeAdapterBuilder(source, Config); + return TypeAdapter.BuildAdapter(source, Config); } public virtual TDestination Map(object source) @@ -76,4 +76,4 @@ public virtual object Map(object source, object destination, Type sourceType, Ty } } -} \ No newline at end of file +} diff --git a/src/Mapster/TypeAdapter.cs b/src/Mapster/TypeAdapter.cs index 8e1af524..85bc2f62 100644 --- a/src/Mapster/TypeAdapter.cs +++ b/src/Mapster/TypeAdapter.cs @@ -5,12 +5,12 @@ namespace Mapster { public static class TypeAdapter { - public static TypeAdapterBuilder BuildAdapter(this TSource source) + public static ITypeAdapterBuilder BuildAdapter(this TSource source) { return new TypeAdapterBuilder(source, TypeAdapterConfig.GlobalSettings); } - public static TypeAdapterBuilder BuildAdapter(this TSource source, TypeAdapterConfig config) + public static ITypeAdapterBuilder BuildAdapter(this TSource source, TypeAdapterConfig config) { return new TypeAdapterBuilder(source, config); } diff --git a/src/Mapster/TypeAdapterBuilder.cs b/src/Mapster/TypeAdapterBuilder.cs index 5a7bebac..7de08459 100644 --- a/src/Mapster/TypeAdapterBuilder.cs +++ b/src/Mapster/TypeAdapterBuilder.cs @@ -7,7 +7,7 @@ namespace Mapster { - public class TypeAdapterBuilder : IAdapterBuilder + public class TypeAdapterBuilder : ITypeAdapterBuilder { TSource Source { get; } TSource IAdapterBuilder.Source => this.Source; @@ -26,7 +26,7 @@ internal TypeAdapterBuilder(TSource source, TypeAdapterConfig config) } [SuppressMessage("ReSharper", "ExplicitCallerInfoArgument")] - public TypeAdapterBuilder ForkConfig(Action action, + public ITypeAdapterBuilder ForkConfig(Action action, #if !NET40 [CallerFilePath] #endif @@ -40,7 +40,7 @@ public TypeAdapterBuilder ForkConfig(Action action, return this; } - public TypeAdapterBuilder AddParameters(string name, object value) + public ITypeAdapterBuilder AddParameters(string name, object value) { this.Parameters.Add(name, value); return this; @@ -112,4 +112,4 @@ public Expression> CreateProjectionExpression>) this.Config.CreateMapExpression(tuple, MapType.Projection); } } -} \ No newline at end of file +}