I’m trying to create an extension method using CodeDOM. There doesn’t seem to be any support for them and using ExtensionAttribute (which C# uses internally to mark extension methods) is not allowed.
It’s possible to use a trick to specify the this modifier, but how do I make the containing class static, so that the code actually compiles?
Since static is a C# concept, it’s not exposed through the CodeDOM API. And setting TypeAttributes to TypeAttributes.Abstract | TypeAttributes.Sealed | TypeAttributes.Public doesn’t work, because
an abstract class cannot be sealed or static
How do I make the extension method to compile?
I’m pretty sure you’re looking for:
However, this appears not to work. Interestingly enough:
But yet when you go and output it, no changes even though the Attributes property clearly changes from
0x00005002to0x00006003.Per Microsoft Connect this is not possible:
A dirty workaround:
Produces:
Which compiles.