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.
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
Allow collection expressions for 'System.Collections.ObjectModel' collection types #111093
base: main
Are you sure you want to change the base?
Allow collection expressions for 'System.Collections.ObjectModel' collection types #111093
Changes from 3 commits
74f8733
33826df
88183ec
b1860b1
e4be175
e3aa02c
3642b18
9e06311
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the reason for this method to be
ReadOnlyCollection.CreateSet<T>()
instead ofReadOnlySet.Create<T>()
in a new static class?The later is much more user friendly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The builder methods aren't for users. They are for compilers to build collection expressions.
The compiler only requires static method in non-generic type.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could replace
ReadOnlyCollection.CreateSet<T>()
with theReadOnlySet.Create<T>()
method if that's more correct.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not what's approved in API review. Questions around the names should go back to the original issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It says that methods can be created in one class or separate ones... #110161 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should have
[EditorBrowsable(Never)]
on both theseCreate
methods (same as the approved API surface in #108457 (comment)).There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was here but @stephentoub wrote "This should not be marked with EditorBrowsable"
API review do not have this attribute also.
Should I return
[EditorBrowsable(Never)]
attribute to both methods?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought API review had just left those out accidentally. I don't feel strongly either way, but we should make sure to be consistent with the other factory APIs and any other ones we're adding I assume (eg. the ones in the other issue).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it wasn't accidental. These are perfectly valid for a dev to call directly, just like FrozenSet.Create, etc. Please remove the attributes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If those methods are meant to be called directly then based on this #110161 (comment) it seams more natural to create 1 non-generic type per collection
like it is done for Immutable and Frozen collections.