C# 是否可以使用脚本语言来管道化.NET方法

C# 是否可以使用脚本语言来管道化.NET方法,c#,.net,pipeline,C#,.net,Pipeline,我想知道是否有任何语言功能/库/工具/技术可以用于在脚本环境中调用管道中的.NET/C#“函数”?例如,我有 public interface IFoo { ... } public interface IBar { IFoo Load(string fileName); IFoo Replace(string oldValue, string newValue); void Save(string fileName); } 然后用适当的Main()将它们包装

我想知道是否有任何语言功能/库/工具/技术可以用于在脚本环境中调用管道中的.NET/C#“函数”?例如,我有

public interface IFoo
{
    ...
}

public interface IBar
{
    IFoo Load(string fileName);
    IFoo Replace(string oldValue, string newValue);
    void Save(string fileName);
}
然后用适当的Main()将它们包装在util.exe中。现在我想像管道DOS命令一样使用它们:

util.exe -load in.txt | util.exe -replace x y | util.exe -save output.txt
可能吗?
IFoo
是否有任何限制,因为它可能是复杂的数据结构,无法轻松序列化为ASCII字符串。去那里怎么走

一个好的选择是C#脚本

这允许您从脚本环境调用任何.NET程序集,其中脚本环境的语言为C#

CS脚本是一个基于CLR(公共语言运行时)的脚本系统,它使用符合ECMA的C#作为编程语言。CS脚本目前的目标是Microsoft在Mono上完全支持CLR(.NET 2.0/3.0/3.5/4.0)的实现

一个好的选择是C#脚本

这允许您从脚本环境调用任何.NET程序集,其中脚本环境的语言为C#

CS脚本是一个基于CLR(公共语言运行时)的脚本系统,它使用符合ECMA的C#作为编程语言。CS脚本目前的目标是Microsoft在Mono上完全支持CLR(.NET 2.0/3.0/3.5/4.0)的实现


PowerShell是非常好的选择

首先,您可以直接调用任何已编译的代码,因此,如果不想在C#中生成实际的cmdlet,您可以在PowerShell中编写调用代码,并使用其所有管道在步骤之间传递数据

即呼叫Ping.Send:

$ping = New-Object System.Net.NetworkInformation.Ping
$ping.send("localhost")

您还可以为漂亮的PowerShell代码和更好的控制实现cmdlet-示例PowerShell是一个非常好的选择

首先,您可以直接调用任何已编译的代码,因此,如果不想在C#中生成实际的cmdlet,您可以在PowerShell中编写调用代码,并使用其所有管道在步骤之间传递数据

即呼叫Ping.Send:

$ping = New-Object System.Net.NetworkInformation.Ping
$ping.send("localhost")

您还可以为漂亮的PowerShell代码和更好的控制实现cmdlet-示例

您也可以为此使用F#。您可以使用它进行顺序数据处理,它是一种.NET语言,因此您可以直接引用C#和VB对象。您可以在和REPL提示符中使用它,默认情况下,.NET SDK中包含解释器。

您也可以使用F#来实现此目的。您可以使用它进行顺序数据处理,它是一种.NET语言,因此您可以直接引用C#和VB对象。您可以在和REPL提示符中使用它,默认情况下,.NET SDK中包含解释器。

通常您只需使用
。但你的例子毫无意义。在
IFoo
上如何调用
IBar
方法?@CodesInChaos,我的示例可能没有意义,但我认为我的问题很清楚。我可以编写Main()包装器来实例化Bar实例,或者这些方法可以是静态的,而不是在接口上。我想我的问题的核心是什么是管道.NET运行时输入/输出的工具。@MitchWheat,我不熟悉PS,将现有的C#library方法改编成PS cmdlet容易吗?通常您只需要使用
。但你的例子毫无意义。在
IFoo
上如何调用
IBar
方法?@CodesInChaos,我的示例可能没有意义,但我认为我的问题很清楚。我可以编写Main()包装器来实例化Bar实例,或者这些方法可以是静态的,而不是在接口上。我想我的问题的核心是什么是管道.NET运行时输入/输出的工具。@MitchWheat,我不熟悉PS,将现有的C#library方法改编成PS cmdlet容易吗?