-
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
Question - mapping to value-types #165
Comments
Hi! Thanks for raising the issues you've found - rest assured I'm working on them :) For this one, I never implemented using All the best, Steve |
That's great news (btw. i'd already seen your commit 😉) If you say that WhenMapping.From<Timestamp>().To<DateTime>().UseConversion(ctxt => ctxt.Source.ToDateTime()); |
It used to be limited to reference types, but it also supports user structs, so the constraint had to go. It's no problem - intuitively it should work for DateTimes, so I'm sorting that out. I'm considering having the mapper auto-detect |
* 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
This is implemented in the latest v1.6 branch - release to follow! Cheers! :) |
Great, we will give it a try once the preview version is available on nuget. |
This is included in v1.6-preview5, which is now available on NuGet. Thanks again! |
The fix for this is 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
We recently observed some strange behavior when it comes to mapping to members of type
DateTime
. We have to deal a lot with protobuf-messages where time-values are represented by theGoogle.Protobuf.WellKnownTypes.Timestamp
(cf https://developers.google.com/protocol-buffers/docs/reference/csharp/class/google/protobuf/well-known-types/timestamp) class.It is straight forware to map from
DateTime
toTimestamp
using theCreateInstancesUsing(...)
-Method. However, for mapping in the opposite direction we fail to specify the mapping.What is the preferred way to create new instances of
DateTime
if we don't want to map them to and from strings?Our mappings:
What yields the following execution plans:
with
Protoa
andA
being:The complete example could be found in this fiddle: https://dotnetfiddle.net/Nm8Bz1
The text was updated successfully, but these errors were encountered: