是否可以用脚本语言管道.NET方法

时间:2012-08-29 23:42:59

标签: 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()将它们包装在util.exe中。现在我想像管道DOS命令一样使用它们:

util.exe -load in.txt | util.exe -replace x y | util.exe -save output.txt

有可能吗? IFoo是否存在约束,因为它可能是复杂的数据结构,无法轻松序列化为ASCII字符串。到达那里的方法是什么?

3 个答案:

答案 0 :(得分:2)

PowerShell是非常好的选择。

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

即。调用Ping.Send:

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

您还可以为优秀的PowerShell代码实现CmdLets并实现更好的控制 - 示例http://www.codeproject.com/Articles/32999/How-to-Write-a-Custom-PowerShell-Cmdlet-Part-I

答案 1 :(得分:1)

一个不错的选择是C#Script

http://www.csscript.net/

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

  

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

答案 2 :(得分:0)

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