Is it possible for a source generator to scan an assembly for used anonymous types, and generate extension methods specifically for those typse?
For example, say you have the following code
var anon = new { Test = 123;}
anon.SomeExtensionMethod(); // SomeExtensionMethod does not (yet) exist
Could a source generator be used to generate SomeExtensionMethod
?
I've given it a quick try. The name and type information of the anonymous type is available when source generators run. However, their name contains characters invalid in non-compiler generated code, so my attempt led to something like
public static class SourceGeneratedCode
{
public static void SomeExtensionMethod(this global::<anonymous type: int Test> value) { }
}
Which of course won't compile. So I wonder - is there any way do to this?
I would like to generate different implementations of this method for different anonymous types; meaning, SomeExtensionMethod
cannot just take in object
, or be generic or such.
No this isn't possible, since the generator still has to produce "regular" source code, and there's no way to name an anonymous type.