정말 오랫만에 NuGet 패키지를 하나 출시했습니다. LINQPad 전용 패키지이고, 사용자와 상호작용하는 기능을 추가하는 LINQPad 스크립트를 만들 수 있게 도와주는 “LINQPadDialogs” 라는 패키지입니다.
패키지 바로 가기: NuGet Gallery | LINQPadDialogs 0.5.2
dotnet add package LINQPadDialogs
요즈음 LINQPad를 이용한 프로토타이핑 코드 작성에 한창 열을 올리고 있는데, LINQPad.Controls 네임스페이스를 우연히 둘러보니 정말 보석같은 기능을 많이 내장하고 있었습니다. 어지간한 UI 컨트롤은 전부 다 제공하고 있었고, HTML 태그를 정교하게 잘 포장해놓은데다, LINQPad 5부터 최신 버전까지 모두 기능을 지원하고 있었습니다.
그래서 아이디어를 떠올려 곧바로 프로토타이핑해 본 후 NuGet 패키지를 바로 출시해보았습니다. 다음과 같은 코드 사용을 가능하게 해줍니다.
var name = await Dialog.OkCancelPrompt("What's your name?");
if (name == default)
{
$"You didn't enter a name.".Dump();
return;
}
else
$"Your name is: {name}.".Dump();
var vegetarianAnswer = await Dialog.YesNo($"Hi {name}, are you a vegetarian?", "yes", "no");
switch (vegetarianAnswer)
{
case "yes":
"I understand, you're a vegetarian, and I'll make sure to honor your request when I take your meal order.".Dump();
break;
case "no":
"I understand, you're not a vegetarian, and I'll make sure to honor your request when I take your meal order.".Dump();
break;
default:
"Okay, I'll respect your privacy.".Dump();
break;
}
LINQPad로 코드를 테스트할 때 아쉬운 점이 있다면, 사용자와 상호작용하는 기능을 구현하는 것이 Console.ReadLine
함수 정도가 최선이고, 그렇지 않으면 Windows Forms 컨트롤이나 WPF 컨트롤을 만들어서 띄워야하다보니 일이 커지는 문제가 있는데, 딱 적정 기술 범위 안에 들어오는 구현 방식이고, 좋은 아이디어를 많이 녹일 수 있을 것 같아 개인적으로는 무척 재미있게 작업했습니다.
실무에서 LINQPad로 프로토타이핑을 계속 할 예정이라, 틈틈이 기능 보강을 많이 해둘 예정입니다.
많이 사용해주시고, 공유해주시면 프로젝트에 큰 힘이 됩니다.
고맙습니다!