Tôi có một công cụ tạo khuôn mẫu được tích hợp vào thư viện lớp học của tôi trông và hoạt động tương tự như ASP kiểu cũ hoặc T4 cho vấn đề đó.
Bạn về cơ bản viết mã C# trong <%%> khối và do đó có thể thực hiện hầu hết mọi thứ mà C# có thể thực hiện, với giới hạn toàn bộ tệp mẫu đang được biên dịch thành một phương thức. Nói cách khác, bạn không thể định nghĩa các lớp trợ giúp và như vậy bên trong khuôn mẫu, nhưng đối với các phương thức trợ giúp bạn có thể làm các phương thức nặc danh.
Ví dụ:
<%
var firstname = "Bob";
var count = 10;
for (Int32 index = 0; index < count; index++)
{
%>
<%= firstname %> x <%= index+1 %>/<%= count %>
<%
}
%>
này sau đó sẽ được biên dịch để một lớp C# trong appdomain khác, và có thể được thực hiện để trả về chuỗi chứa văn bản được sản xuất.
Bạn cũng có thể chuyển đối số vào mẫu và cũng tham khảo thư viện lớp, có nghĩa là bạn có thể chuyển cấu trúc dữ liệu tùy chỉnh hoặc truy cập lớp truy cập dữ liệu hoặc mã logic nghiệp vụ từ mẫu của bạn.
Nếu bạn muốn nhìn vào nó, các mã có sẵn trong thư viện lớp học của tôi từ kho lưu trữ Subversion tôi hoặc trang web:
Đối với kho lưu trữ lật đổ bạn cần tên người dùng và mật khẩu, cả hai đều là "khách", không có dấu ngoặc kép.
Mã nằm trong dự án/lắp ráp LVK.Text.Templating.
Ngoài ra, hãy cho tôi biết (xem email trên trang tiểu sử hoặc để lại nhận xét) và tôi sẽ cung cấp cho bạn một số ví dụ khác.
Nguồn
2009-10-05 10:04:13
Xem thêm http://stackoverflow.com/questions/733378/whats-a-good-way-of-doing-string-templating- trong mạng – Simon
http://stackoverflow.com/questions/9176859/generate-html-file-at-runtime-and-send-as-email-attachment/9177106#9177106 – adt
Một thay thế .NET cho StringTemplate là https://github.com/beto-rodriguez/Templator, đơn giản và nhanh chóng của nó và bạn có thể cài đặt nó thành nuget 'Install-Package Tor' –