Fix scenario where generic implementation type doesn't have type factory intialized #1693
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixing the scenario where the implementation type of an RCW we are creating is not the same as the statically declared type and it is a generic type whose RCW factory hasn't been initialized by the projection for another scenario.
For instance, lets say we are returning a list in the implementation but we declared on the API surface as an
IEnumerable<object>
. In this case, runtime class name would report it is aIList<object>
but the RCW factory for it would not have been registered by the projection given it only knowsIEnumerable<object>
and registered that one. We now detect such scenarios and fallback best effort to the statically known type's RCW factory which should be initialized. If a user wants to cast after to the actual implementation type, they can still manually register the RCW factory to get it properly constructed.Fixes the issue referenced in this comment: #1623 (comment)