C # 템플릿 엔진
C # 코드, 템플릿 엔진에서 사용하기 쉬운 독립 실행 형을 찾고 있습니다. 데이터 자리 표시자가있는 HTML 및 XML 파일을 만들고 내 코드의 데이터로 채우려 고합니다.
엔진은 루프 (템플릿의 일부를 하나 이상의 객체에서 복제)와 조건 (일부 조건이 참인 경우에만 최종 HTML / XML에 템플릿의 일부를 추가)을 지원해야합니다. 누군가 나에게 좋은 옵션을 추천하고 그러한 코드 샘플에 대한 링크를 추가 할 수 있습니까?
또한 루프를 사용하여 테이블 행을 복제하거나 전체 테이블 (HTML 버전)과 복잡한 요소 (XML 버전)를 복제해야합니다.
좋은 결과로 StringTemplate 을 사용했습니다 . 일부 리소스 :
RazorView 엔진 사용 방법 : RazorEngine 을 사용하여 지역화 가능한 텍스트 템플릿 엔진을 만드는 방법에 대한 멋진 기사가 있습니다.
T4, Text Template Transformation Toolkit은 어떻습니까? 요구 사항에 맞아야하며 Visual Studio에 기본 제공됩니다.
훌륭한 T4 리소스 :
SmartFormat 은 모든 요구 사항을 충족하는 매우 간단한 라이브러리입니다. "자연어"텍스트 작성에 중점을두고 있으며 목록에서 데이터를 생성하거나 조건부 논리를 적용하는 데 유용합니다.
구문은와 매우 유사하며 String.Format매우 간단하고 배우고 사용하기 쉽습니다. 다음은 문서의 구문 예입니다.
Smart.Format("{Name}'s friends: {Friends:{Name}|, |, and}", user)
// Result: "Scott's friends: Michael, Jim, Pam, and Dwight"
라이브러리는 오픈 소스이며 쉽게 확장 할 수 있으므로 추가 기능으로 향상시킬 수도 있습니다.
XSLT를 보셨습니까 ? 데이터 개체를 xmlserialize하여 XML의 소스 데이터 형식으로 시작해야합니다. 루프 와 if 문 을 쉽게 할 수 있습니다 !
Kathleen Dollard는 XSLT를 통한 코드 생성에 관한 책을 가지고 있습니다.
개인적으로 저는 T4 의 열렬한 팬 이지만 (특히 C #을 생성 할 때) XML과 HTML이 출력 유형이므로 XSLT가 다루었 음을 알 수 있습니다. 또한 매우 교차 플랫폼입니다.
내 클래스 라이브러리에 기존 스타일의 ASP 또는 T4와 비슷하게 보이고 작동하는 템플릿 엔진이 있습니다.
기본적으로 C # 코드를 <% %> 블록에 작성하므로 전체 템플릿 파일이 단일 메서드로 컴파일된다는 제한을 제외하고 C #이 할 수있는 대부분의 작업을 수행 할 수 있습니다. 즉, 템플릿 내에서 도우미 클래스 등을 정의 할 수 없지만 도우미 메서드의 경우 익명 메서드를 수행 할 수 있습니다.
예:
<%
var firstname = "Bob";
var count = 10;
for (Int32 index = 0; index < count; index++)
{
%>
<%= firstname %> x <%= index+1 %>/<%= count %>
<%
}
%>
그런 다음 다른 appdomain의 C # 클래스로 컴파일되고 생성 된 텍스트가 포함 된 문자열을 반환하기 위해 실행될 수 있습니다.
인수를 템플릿에 전달할 수도 있고 클래스 라이브러리를 참조 할 수도 있습니다. 즉, 사용자 지정 데이터 구조를 전달하거나 템플릿에서 데이터 액세스 계층 또는 비즈니스 논리 코드에 액세스 할 수 있습니다.
보고 싶다면 Subversion 저장소 또는 웹 페이지의 클래스 라이브러리에서 코드를 사용할 수 있습니다.
- 소스 코드의 Subversion 저장소
- 바이너리의 Subversion 저장소 , 단위 테스트를 빌드하고 통과하는 최신 체크인 소스 코드 포함)
Subversion 저장소의 경우 사용자 이름과 암호가 필요합니다. 둘 다 따옴표없이 "게스트"입니다.
코드는 LVK.Text.Templating 프로젝트 / 어셈블리에 있습니다.
또한 알려 주시면 (프로필 페이지의 이메일 참조 또는 의견 남기기) 몇 가지 예를 더 제공해 드리겠습니다.
이 .NET 템플릿 엔진 이 필요할 수 있습니다 .
템플릿 코드 :
$Book.StaticId$
ID: $bk.BookId$ - Author: $bk.Author.Name$
Length of the author's Name: $bk.Author.Name.Length$
C # 코드 :
class Author
{
public string Name
{
get
{
return "John Borders";
}
}
}
class Book
{
public static string StaticId
{
get
{
return "AABB";
}
}
public int BookId
{
get
{
return 100;
}
}
public Author Author
{
get
{
return new Author();
}
}
}
public class PropertySample1
{
[STAThread]
static void Main()
{
TemplateEngine dt = new TemplateEngine();
dt.LoadFromFile("Template.tpl");
Book book = new Book();
dt.SetValue("bk", book);
dt.UsingNamespace("CSharp,Demo");
string output = dt.Run();
Console.WriteLine(output);
}
}
출력은 다음과 같습니다.
AABB
ID: 100 - Author: John Borders
12
참고 URL : https://stackoverflow.com/questions/1518954/c-sharp-template-engine
'program story' 카테고리의 다른 글
| 자바의 퍼지 문자열 검색 라이브러리 (0) | 2020.11.12 |
|---|---|
| RNGCryptoServiceProvider의 장단점 (0) | 2020.11.12 |
| C # ASP.NET Single Sign-On 구현 (0) | 2020.11.12 |
| SQL Server : 일괄 처리 문 (즉, "GO"사용)이 좋은 이유는 무엇입니까? (0) | 2020.11.12 |
| 채널의 요소 수 (0) | 2020.11.11 |