A nested generic member redeclares T, hiding the outer class type parameter (CS0693). If the inner T ever picks up a different constraint set the shadowing becomes a real bug.
Proposed change:
- Identify the inner member (method or nested type) producing CS0693.
- Rename its parameter to a descriptive alternative — TRecord if it represents a row payload, TItem if generic, TBatch for a batch container. Pick the name that matches the existing vocabulary of the file.
- Update all references within the inner scope.
If the inner type/method is public, renaming a type parameter is technically source-breaking for callers using positional generic syntax — but type parameter names are not part of the binary contract, and named generic parameters aren't used in C# call sites. Safe in practice.
A nested generic member redeclares T, hiding the outer class type parameter (CS0693). If the inner T ever picks up a different constraint set the shadowing becomes a real bug.
Proposed change:
If the inner type/method is public, renaming a type parameter is technically source-breaking for callers using positional generic syntax — but type parameter names are not part of the binary contract, and named generic parameters aren't used in C# call sites. Safe in practice.