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