var obj = new
{
Name = "evan-choi",
Others = new[] { 1, 2, 3 },
Nested = new
{
Message = "Hi"
}
};
Select(obj, “Name”) → “evan-choi”
Select(obj, “Others[…^1]”) → [1, 2]
Select(obj, “Nested.Message”) → “Hi”
위의 예시처럼
객체를 PropertyPath와 같이 string 표현식으로 value를 탐색하는 가장 쉬운 방법이 있을까요?
간단한 리서치 결과로 cs-script
라는 좋은 오픈소스 프로젝트를 사용하면
마법처럼 구현할 수 있지만 배보다 배꼽이 커지는 기분입니다.
직접 만드는게 빠르겠다 싶어서 아래와 같이 사용할 수 있도록
싱글 클래스로 간단하게 코딩하여 GitHub Gist에 올렸습니다.
Examples
var list = new List<string> { "forum", "dotnetdev", "kr" };
var selector = new ObjectSelector("[^2].Length");
selector.Select(list); // 9
public class ExplicitIndexer
{
public int this[int index] => index;
public int Length => 10;
}
var obj = new ExplicitIndexer();
var selector = new ObjectSelector("[^1]");
selector.Select(obj); // 9