I\'m playing with ScriptCS (which is awesome!) but I couldn\'t figure out how to define an extension method within a .csx script file.
Take this e
I feel your pain.
Actually this is a limitation of Roslyn currently as it wraps everything into a class even if it is another class.
I've talked to the Roslyn team however and they are going to support extension methods soon.
Unfortunately, because compiling something on the fly requires a class, scriptcs
was designed to take the raw code that mattered and wrap it in a class. You would need to modify a version of scriptcs
for your needs -or consider contributing to the project.
However, I too love scriptcs
and think it's one of the most fantastic projects out there today!
I too tried this early on when using scriptcs
and my heart broke when it didn't work. If I had more bandwidth I'd contribute this addition on my own.
AFAIK this is not a limitation with Roslyn.
Good news! It is now supported in C# script files (.csx)
But you have to declare an extension method on top level:
static string MyToLowerExtension(this string str)
{
return str.ToLower();
}
Do not declare it in a static class:
// this will not work!
public static class MyExtensionsClass
{
static string MyToLowerExtension(this string str)
{
return str.ToLower();
}
}