LINQPadDialog - 사용자와 상호 작용하는 LINQPad 스크립트 만들기

정말 오랫만에 NuGet 패키지를 하나 출시했습니다. LINQPad 전용 패키지이고, 사용자와 상호작용하는 기능을 추가하는 LINQPad 스크립트를 만들 수 있게 도와주는 “LINQPadDialogs” 라는 패키지입니다.

패키지 바로 가기: NuGet Gallery | LINQPadDialogs 0.5.2

dotnet add package LINQPadDialogs

요즈음 LINQPad를 이용한 프로토타이핑 코드 작성에 한창 열을 올리고 있는데, LINQPad.Controls 네임스페이스를 우연히 둘러보니 정말 보석같은 기능을 많이 내장하고 있었습니다. 어지간한 UI 컨트롤은 전부 다 제공하고 있었고, HTML 태그를 정교하게 잘 포장해놓은데다, LINQPad 5부터 최신 버전까지 모두 기능을 지원하고 있었습니다. :blush:

그래서 아이디어를 떠올려 곧바로 프로토타이핑해 본 후 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로 프로토타이핑을 계속 할 예정이라, 틈틈이 기능 보강을 많이 해둘 예정입니다.

많이 사용해주시고, 공유해주시면 프로젝트에 큰 힘이 됩니다.

고맙습니다!

8 Likes

LinqPad가 정확히 머 하는 건가요?
검색 해봐도 잘 모르겠네요.

3 Likes

c# LINQ 코드를 데이터베이스에 붙여 실행해볼 수 있는 도구로 십여년전 처음 개발되었고, 지금까지 계속 기능이 더해져서 이제는 IDE 수준까지 발전한 프로그램입니다.

개인적으로는 Rider나 Visual Studio 한 번 켤때 이 프로그램을 100번도 넘게 더 씁니다. ㅎㅎ

제가 개발했던 식탁보도 3년전 여기서 프로토타이핑해서 하루만에 첫 버전을 내기도 했었고요.

4 Likes

또 하나 배웠습니다.
감사합니다!

3 Likes