Fix abstract class constructor processing in hook metadata generation#2888
Merged
Fix abstract class constructor processing in hook metadata generation#2888
Conversation
Co-authored-by: thomhurst <30480171+thomhurst@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Abstract Class
Fix abstract class constructor processing in hook metadata generation
Aug 13, 2025
[Before(Test)] breakage
Contributor
|
Claude finished @Copilot's task —— View job Code Review Complete ✅Todo List:
📋 Review SummaryThis PR provides an excellent fix for issue #2887. The solution is well-designed, thoroughly tested, and maintains backward compatibility. ✅ StrengthsCode Quality
Problem Resolution
Test Coverage
💡 Minor ObservationsCode OrganizationThe fix appears in two places due to method duplication:
This is actually good practice as it maintains consistency across both code paths. Performance Considerations
🔒 Security Assessment
🎯 Test Strategy EvaluationThe testing approach is solid:
📊 Overall AssessmentThis is a high-quality fix that:
Recommendation: ✅ Approve The fix is ready to merge. It addresses the root cause, includes proper testing, and maintains code quality standards. |
This was referenced Aug 14, 2025
This was referenced Sep 29, 2025
This was referenced Oct 8, 2025
This was referenced Oct 16, 2025
This was referenced Oct 24, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The hook metadata generator was failing when processing abstract base classes that have parameterized constructors and hook methods. This resulted in a
NullReferenceExceptionduring test discovery.Problem
The issue occurred when:
protected)[Before(Test)]The
WriteClassMetadataGetOrAddmethod inMetadataGenerationHelper.cswas callingtypeSymbol.InstanceConstructors.FirstOrDefault()which returns any instance constructor, including protected ones. For abstract classes with parameterized constructors, this would select a protected constructor and later cause issues during metadata generation.Example that previously failed
This would throw:
Solution
Modified the constructor selection logic in
MetadataGenerationHelper.csto:The fix maintains backward compatibility while properly handling abstract inheritance patterns commonly used with dependency injection.
Testing
BaseClass<T>) continue to workFixes #2887.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
aka.mscurl -I -sSL --retry 5 --retry-delay 2 --connect-timeout 15 REDACTED(dns block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.