gpt4 book ai didi

.net - 从 Perl 调用 .NET

转载 作者:可可西里 更新时间:2023-11-01 09:26:32 25 4
gpt4 key购买 nike

我有一个 Perl 脚本,需要调用 .NET 程序集中的方法。我找到了 this technique但它涉及一次性 Perl 脚本,所以我没有使用它。我最终编写了一个简单的 .NET 控制台应用程序作为我需要的调用的包装器,并使用 Console.In/Console.Out/IPC::Open2 让我的 Perl 脚本与包装器通信。

事实证明这是有问题的,因为 .NET 的 StreamReader.ReadToEnd 方法似乎无法检测到 Console.In 上的文件结尾,即使在我的Perl 脚本关闭了它的管道末端!

我最终破解了一个适合我的目的的解决方案,但是有没有更好的方法从 Perl 调用 .NET?

最佳答案

"StreamReader.ReadToEnd method did not seem able to detect the end-of-file on Console.In"

您似乎已经能够与 .NET 交互。但是你打给了StreamReader.ReadToEnd在控制台输入上。这可能会有问题,即使没有 Perl。这是为什么的摘录:

ReadToEnd assumes that the stream knows when it has reached an end. For interactive protocols, in which the server sends data only when you ask for it and does not close the connection, ReadToEnd might block indefinitely and should be avoided.

也许您的代码是正确的,但您需要根据您的目的使用不同的方法。

编辑:

"I ended up writing a trivial .NET console app as a wrapper "

在我看来,您尝试在两者(Perl 和 .NET)之间进行通信。您选择的协议(protocol) (Console.In/Out) 可能有效,但您应该在 .NET 应用程序中循环使用 StreamReader.ReadStreamReader.ReadLine,这样您可以轻松检测到流何时关闭。 Read 操作在 EOF 时将返回 null

或者,您可以在 Perl 中使用您喜欢的任何方法,并从 .NET 中调用它。即,您反转逻辑,.NET 只是通过与您的 Perl 代码交互来请求输入。然后您就可以坚持使用 Perl 来完成您的主要编程任务。您可以使用 PerlSharp 执行此操作.

关于.net - 从 Perl 调用 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com