استفاده از جریان های ورودی در برنامه های دات نت برای خطوط لوله فرمان

هنگام ساخت برنامه های کاربردی .NET که برای استفاده در محیط های کنسول در نظر گرفته شده است ، طراحی برنامه شما برای انعطاف پذیری ضروری است. یکی از الزامات متداول این است که تشخیص دهد که آیا ورودی از طریق خط لوله فرمان (یعنی از stdin) ارائه می شود و در صورت عدم انجام یک عمل پیش فرض. در این مقاله به بررسی چگونگی بازرسی جریان ورودی در برنامه .NET خود می پردازیم و رفتار را بر این اساس تنظیم می کنید.
خطوط لوله فرمان در لینوکس
در لینوکس ، اپراتور لوله (|
) خروجی یک دستور را به ورودی دیگری متصل می کند. به عنوان مثال:
echo "Hello, World!" | dotnet run
در این دستور ، خروجی echo
از طریق ورودی استاندارد به برنامه دات نت شما ارسال می شود. برنامه شما باید تعیین کند که آیا این ورودی لوله کشی به منظور پردازش صحیح داده ها یا استفاده از منطق Fallback وجود دارد.
بررسی ورودی در یک برنامه .NET
روش های مختلفی برای تشخیص اینکه آیا داده های موجود در جریان ورودی وجود دارد ، وجود دارد یا خیر. در زیر ، ما در مورد سه رویکرد متداول بحث می کنیم.
تشخیص تغییر مسیر ورودی
یک راه حل خوب برای تعیین اینکه آیا ورودی استاندارد هدایت می شود یا خیر. .net فراهم می کند Console.IsInputRedirected
املاک ، که برمی گردد:
-
true
هنگامی که ورودی از یک لوله یا یک پرونده وارد می شود. -
false
هنگامی که ورودی از یک جلسه ترمینال تعاملی است.
مثال: رسیدگی به ورودی مشروط
در زیر مثالی آورده شده است که نحوه بررسی تغییر مسیر ورودی قبل از تلاش برای خواندن داده ها را نشان می دهد. این رویکرد در صورت ارائه اطلاعات لوله کشی از رفتار مسدود کننده جلوگیری می کند:
if (Console.IsInputRedirected)
{
string input = Console.In.ReadToEnd();
Console.WriteLine("Received Input: " + input);
}
else
{
Console.WriteLine("No input detected; proceeding with default action.");
}
ادغام با خطوط لوله فرمان
با ترکیب این روش ها با خطوط لوله فرمان لینوکس ، برنامه .NET شما می تواند با هوشمندی بر اساس منبع ورودی آن کار کند. به عنوان مثال ، خط لوله را در نظر بگیرید:
cat sample.txt | dotnet run
هنگامی که داده ها از طریق برنامه شما لوله کشی می شوند sample.txt
، یکی از روشهای فوق ورودی را تشخیص داده و آن را پردازش می کند. اگر هیچ داده ای لوله کشی نشده باشد ، برنامه شما می تواند منطق جایگزین را اجرا کند. این انعطاف پذیری باعث می شود برنامه شما قوی و سازگار با شرایط مختلف زمان اجرا باشد.
پایان
تشخیص اینکه آیا یک جریان ورودی حاوی داده ها هنگام طراحی برنامه های دات نت که با خطوط لوله فرمان تعامل دارند ، بسیار مهم است.