0

我想知道是否有任何语言功能/库/工具/技术可以用来在脚本环境中的管道中调用 .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 字符串。到达那里的方法是什么?

4

3 回答 3

2

PowerShell 是非常好的选择。

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

即调用 Ping.Send:

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

您还可以实现 CmdLets 以获得漂亮的 PowerShell 代码和更好的控制 - 示例http://www.codeproject.com/Articles/32999/How-to-Write-a-Custom-PowerShell-Cmdlet-Part-I

于 2012-08-30T01:08:18.147 回答
1

一个不错的选择是 C# 脚本

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。

于 2012-08-29T23:49:03.300 回答
0

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

于 2021-05-07T19:37:34.857 回答