-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define mappings with interfaces #163
Comments
Hi! Yep, that's a bug. I'll fix it and get back to you. Thanks for the feedback! Steve |
This is fixed as of v1.6-preview2, which is now on NuGet. Thanks again! Steve |
Perfect! This a great improvement, especially because you do not have to do this anymore Mapper
.WhenMapping
.From<IA>()
.To<IB>()
.Map<ImplementedA>()
.To<ImplementedB>() You can now define mappings based solely on interfaces, and they will be picked up by the execution plan. Mapper
.WhenMapping
.From<IA>()
.To<IB>(); I think you should add this fact to the documentation once 1.6.0 is released as it provides very flexible and reusable ways of defining mappings. Thanks for the blazing fast implementation/correction of this issue ! |
Great point, thanks! I'll update the documentation when 1.6 is finished :) Thanks again! Steve |
The changes you've made introduced a behaviour change but I'm not sure of the actual reason. For instance :
Works fine on preview1 but throws an exception on preview2 In this use case, there is no specific mapping defined and I'm only relying on implicit, name based mappings. |
Oh! Must be a hole in my tests somewhere - I'll check it out and report back. Cheers! Steve |
Hello again! I've just uploaded v1.6 preview3 to NuGet, which behaves like preview 1 with respect to the All the best, Steve |
Hi, Sorry for the delay. I can confirm that both my (slightly more complicated) use cases are working now. Thank you! |
These fixes are included in v1.6, which is now available on NuGet. Thanks again for the feedback! |
* Updating to v1.6 * Fixing numeric to non-int-derived enum mapping * v1.6-preview1 NuGet package * Mapping non-mappable-element enumerables to empty collections * Support for type-pairing using interfaces, re: #163 * v1.6-preview2 * Adding project icon * Bugs/issue163 (#164) * Adding .NET Core 3 test project * Removing assembly scanning for interfaces / Handling interface -> implementation type pairing / Tidying * Removing issue-specific test + updating .NET Core 3 package versions * Updating icon, adding v1.6-preview3 package * Tidying * Tidying * Tidying * Splitting Root- and MemberDataSourceSetFactories * Adding EmptyDataSourceSet / Filtering out unusable fallback data sources in DataSourceSet factory method instead of MemberPopulator * Making EmptyDataSourceSet a singleton / Adding NullMemberPopulator * Removing IEnumerable from IDataSourceSet * Extending interface mapping test coverage * Fixing .NET 3.5 source filters * Features/simple type create instances using (#169) * Failing unit test / Simplifying configured factory creation * Tidying * Support for configured object factories for simple (not primitive) types, re: #165 * Splitting out incorrect object factory configuration tests * Removing unnecessary ignore from test * Implementing simple type factories using ObjectFactories * Adding lightweight IMemberMapperData implementation * Creating element mapper data when using a configured simple type object factory for an enumerable element * Support for simple type factory use in simple type enumerable mapping * Support for conditional simple-type factories / Splitting simple-type factory tests into dedicated test class * Support for conditional simple value factories with fallback to default conversion * Support for simple type factory Funcs * Support for nullable simple type factories * Optimising simple type factory expression creation * Test coverage for nullable simple type to simple type factory / Support for TimeSpan mapping (?!) * Handling nested access checks in nullable-to-simple type factory use * TimeSpan mapping test coverage * Fixing test for .NET 3.5 * Adding package icon setting * Bugs/issue166 (#170) * Only populating MapperDatas in maptime-created ObjectMappingDatas if necessary + available, re: #166 * Renames for clarity * Tidying * Updating release notes * Fixing translation of mapping plans with assignment of a local enum variable, re: #168 (#171) Using GetVariableNameInCamelCase() for multi-invocation local variables * Only creting a mapping LambdaExpression when necessary * Organising mapping data source factory classes * Tidying * Updating to v1.6-preview4 * Lazy-loading ObjectMapperData ChidMapperData and DataSourcesByTargetMember * Replacing Dictionary<,> with simple array-based alternative * General tidying * Ensuring root mapping plans include the mapper func parameter * Removing capture creation in QualifiedMember pathfactories * Using less derived parameter types * Handling runtime-typed, simple-to-complex data sources configured using Map(s => s, t=> t), re: #174 (#177) * Features/element index (#178) * Renaming EnumerableIndex to ElementIndex * Adding ElementKey through, adding failing test * Support for ElementKey! * Support for ElementKey with element-value-typed source Dictionaries * Extra test coverage * Updating to v1.6-preview5 * Type-Specific naming rules in the static API (#181) * Fixing API / Adding ConfiguredNamingPattern / Adding type-specific naming tests * Tidying * Updating naming settings to be non-ruleset-specific * Moving MapperContext into BasicMapperData * Tidying * Renaming BasicMapperData * Setting QualifiedMemberContext on members * Fixing tests * Updating documentation * Updating release notes * Bugs/183 abstract member validation (#185) * Support for applying custom data sources to base types only * Improved detection of unmappable target types in mapping validation * Tidying * Extra test coverage * Explicit support for DateTimeOffset mapping, re: #183 * Counting System.Drawing as a Base Class Library, re: #180 * Removing root source dynamic mapping tests from .NET Standard 1.0, re: #183 * Features/derived type mapping improvements (#186) * Support for using MapTo() without specifying a derived source type, re: #172 * Test coverage for nested interface type pairing, re: #172 * Bugs/176 complex type data source method (#187) * Adding failing tests re: using a custom method as a data source for a complex type * Splitting NestedAccessCheck finding and Multi-invocation finding / Moving multi-invocation handling to MemberPopulator * Making ExpressionInfoFinder static * Moving multi-invocation handling back into DataSourceBase * Applying multi-invocation replacements to DataSourceBase populations * Handling assignment of chained multi-invocation variables / Optimising Expression replacement * Handling null return values from custom object factories / Optimising Member Binding generation * Registering static method complex type data sources as factoey methods * Optimising for single multi-invocation * Tidying * Processing multi-invocations in DataSource finalisation * Revert "Processing multi-invocations in DataSource finalisation" This reverts commit 5312747. * Avoiding multi-invocation processing of alternate population branches * Processing multi-invocations in DataSource finalisation * Skipping multi-invocation checks for composite data source value expressions Optimising empty child mapper data collection access * Fixing .NET 3.5 invocation comparison
Hi,
According to the documentation, I assumed that mappings defined using interfaces would be applied to derived types. To my surprise, it did not.
Am i doing something wrong ? Is this a bug or is this by design ?
Note it is working if your using base classes instead of interfaces.
See this fiddle.
Regards
The text was updated successfully, but these errors were encountered: