Gram z ScriptCS (co jest niesamowite!), Ale nie mogłem dowiedzieć się, jak zdefiniować metodę rozszerzenia w pliku skryptu .csx.Jak zdefiniować metodę rozszerzenia w skrypcie scripts csx
Weźmy ten przykład:
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);
}
To daje błąd:
error CS1109: Extension methods must be defined in a top level static class; Extensions is a nested class
Zgaduję, że ScriptCS owija CSX w jakiejś klasie, która jest przyczyną rozszerzenia być zagnieżdżone, czy istnieje sposób obejścia tego?
To jest ograniczenie w Roslyn. Zobacz: http://social.msdn.microsoft.com/Forums/en-US/roslyn/thread/7c0a18eb-d37a-40e2-a26c-edb59b8f5cf3/. Obecnie nie można zdefiniować metod rozszerzeń w plikach '.csx'. Musisz umieścić je w bibliotece dll i odwołać się do biblioteki dll. – nemesv
@nemesv to wygląda answer-worthy =) Dziękuję – TJB