객체 속성을 표현식(string)으로 탐색하는 방법

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
6개의 좋아요

좋은 자료 감사합니다 :slight_smile:
바로 스타 찍었고 필요할 때 참고하겠습니다!

2개의 좋아요

NuGet 으로 배포하시면 꽤 사용자가 있을것 같습니다

3개의 좋아요