c# - 如何在 scriptcs csx 脚本中定义扩展方法

标签 c# .net extension-methods scriptcs

我正在玩 ScriptCS (太棒了!)但我想不出如何在 .csx 脚本文件中定义扩展方法

举个例子:

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);
}

这会产生错误:

error CS1109: Extension methods must be defined in a top level static class; Extensions is a nested class

我猜 ScriptCS 将 csx 包装在导致嵌套扩展的某个类中,有什么办法解决这个问题吗?

最佳答案

我感受到你的痛苦。

实际上这是 Roslyn 目前的一个限制,因为它将所有内容都包装到一个类中,即使它是另一个类也是如此。

不过,我已经与 Roslyn 团队谈过,他们很快就会支持扩展方法。

关于c# - 如何在 scriptcs csx 脚本中定义扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16948562/

相关文章:

c# - 仅调试和中断空指针异常

.net - 在 .NET 中,Array 只扩展了 IEnumerable,那么当 foreach 循环经过值类型数组时,是否会有装箱和拆箱?

c# - 轻松将 WCF 托管从自托管更改为 Windows 服务托管

c# - 使用 C#/ASP.NET MVC 进行逐帧 MJPEG 流式传输

c# - 在滚动文件的顶部仅包含一次标题

c# - ElasticSearch和NEST查询问题

c# - 在 [DebuggerDisplay] 属性中使用扩展方法

c# - 从派生类内部调用 C# 基类扩展方法?

C# 帮助扩展方法 - 将集合转换为另一种类型

c# - Xamarin.Forms 从 mvvm ViewModel 设置焦点