Adding analyzer to notify user classes that implement IGrain should inherit from Grain #6941
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.
Closing #6194
From the feedback, it might be helpful to have an analyzer check to see if a non-abstract class implements
IGrain
, but doesn't inherit fromGrain
.Previously, there was no message from the compiler when a user forgets to derive an implementation from the base
Grain
class, so this analyzer will generate ORLEANS0003 and inform the user that "Non-abstract classes that implement IGrain should derive from the base class Orleans.Grain".Example, using HelloWorld from the Samples, where
HelloGrain
implementsIHello
, which implements the interfaceIGrainWithIntegerKey
:Another addition is the CodeFixProvider, which provides the user with a potential fix:
Also works on classes that derive from an abstract class that implements
IGrain