Sto giocando con ScriptCS (che è fantastico!) Ma non sono riuscito a capire come definire un metodo di estensione all'interno di un file di script .csx.Come definire un metodo di estensione in uno script csx script
Prendete questo esempio:
using System.IO;
public static class Extensions
{
public static string Remove(this string source, params string[] toRemove)
{
foreach(var r in toRemove)
{
source = source.Replace(r,"");
}
return source;
}
}
string[] entries =
Directory
.GetFiles(
@"C:\Users\blah\blah",
"*.mp4",
SearchOption.AllDirectories)
.Select(p => p.Remove("Users"))
.ToArray();
foreach(var e in entries)
{
Console.WriteLine(e);
}
Questo produce l'errore:
error CS1109: Extension methods must be defined in a top level static class; Extensions is a nested class
Sto indovinando che ScriptCS avvolge il CSX in qualche classe che sta causando le estensioni per essere nidificati, c'è qualche modo intorno a questo?
Questa è una limitazione in Roslyn. Vedi: http://social.msdn.microsoft.com/Forums/en-US/roslyn/thread/7c0a18eb-d37a-40e2-a26c-edb59b8f5cf3/. Quindi attualmente non puoi definire i metodi di estensione nei file '.csx'. È necessario inserirli in una DLL e fare riferimento alla DLL. – nemesv
@nemesv questo sembra answer-worthy =) Grazie – TJB