Windows 서비스 알림 프로젝트 (.NET 4.0)에서 StringTemplate을 사용하고 있습니다. 내 목표는 쿼리 및 문자열 템플릿을 정의하는 XML 파일을 읽고 처리하는 것입니다. 그런 다음 클래스는 DataTable의 결과를 전자 메일 용 템플릿에 바인딩합니다. 아래는 XML 스 니펫과 LINQ 문과 바인딩을 수행하는 C#입니다.DataSet을 StringTemplate에 동적으로 매핑하십시오.
<!-- XML Data Original-->
<Items>
<Item>
<Query>
Select name, title, date from People;
</Query>
<Template>
Welcome $name to $title$ on $date$.
</Template>
</Item>
</Items>
var dataTable = database.GetQuery(query);
var data = (from dataRow in dataTable.AsEnumerable()
select new
{
Name = dataRow.Field<string>("Name"),
Title = dataRow.Field<string>("Title"),
Date = dataRow.Field<DateTime>("Date")
}).Distinct();
stringTemplate.SetAttribute("Name", data.Name);
stringTemplate.SetAttribute("Title", data.Title);
stringTemplate.SetAttribute("Date", data.Date);
문제는 위의 C#은 정적이며, 나는 그것을 동적으로 만들고 싶습니다. XML 쿼리 요소에 다른 필드를 추가하고 해당 템플릿 필드를 추가해야하는 경우에는 어떻게됩니까?
<!-- XML Data Modified-->
<Items>
<Item>
<Query>
Select name, title, date, location from People;
</Query>
<Template>
Welcome $name to $title$ on $date$ at $location$.
</Template>
</Item>
</Items>
DataTable에 새 열이 포함되어 있지만 LINQ 문과 바인딩 코드는 포함되어 있지 않습니다. 내 질문은 가져올 데이터 테이블에서 내 stringtemplate 동적으로 어떤 전략을 채용 할 수 있습니까? 참고 현재 LINQ를 사용하고 있지만 솔루션을 사용할 필요는 없습니다.
; 당신은 당신의 질문에있는 XML의 나머지 부분을 가지고 있지 않습니다. 실제 템플릿; 그 XML 여전히 거기에, 또는 당신이 메시지를 생성하고 마우스 조작을 사용하여 XML에 수동으로 삽입 ... 또는 그런 식으로 문자열 템플릿을 사용 했습니까? – Dave