2015-01-09 11 views
1

이의 나는 다음과 같은 템플릿을 가정 해 봅시다 매개 변수로 <문자열, 문자열> :DotLiquid - 사전

Hi {{ name }}! Welcome back to {{ blog }}. Last log-in date: {{ date }}. 

사용자가 템플릿과 자리/변수를 모두 입력 할 수, 그래서 말하는 방법이 없습니다 플레이스 홀더는 어떻게 될 것인가.

나는 이런 식으로 뭔가를 만드는 생각했다 :

public string Render(string text, Dictionary<string,string> placeholders) 
{ 
    Template template = Template.Parse(text); 
    return template.Render(Hash.FromSomething(placeholders)); 
} 

이 사전을 받아 FromDictionary라는 방법이 있고 난 정말 어떻게 작동하는지 이해하지 않습니다. 다른 대안은 FromAnonymousObject이지만, 목적에 맞게 사전을 익명 객체로 변환하는 방법을 모르겠습니다.

모든 아이디어를 높이 평가하겠습니다!

답변

1

Hash.FromDictionary 실제로 원하는 방법입니다. 귀하가 대답에 매우 가깝다고 생각합니다. Dictionary<string, string>Dictionary<string, object>으로 변환하면됩니다. (값은 object 당신이 기본 유형뿐만 아니라 거기에 중첩 된 객체를 포함 할 수 있기 때문입니다.)

public string Render(string text, Dictionary<string,string> placeholders) 
{ 
    Template template = Template.Parse(text); 
    Dictionary<string, object> convertedPlaceholders = 
     placeholders.ToDictionary(kvp => kvp.Key, kvp => (object) kvp.Value); 
    return template.Render(Hash.FromDictionary(convertedPlaceholders)); 
} 

는 (I 실수가있을 경우 사과, 그래서 그것을 컴파일하지 않고 SO에이 입력 한. 알려줘 답변을 업데이트하겠습니다.)

+0

감사합니다. 내가 처음부터 이해하지 못했던 잘못된 점은 사전에 "keyName"대신 "{{keyName}}"형식으로 키를 전달한다는 것입니다. – user2642287