CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 679

679

Phụ lục A: Giới thiệu một số công cụ .NET

kiếm, bạn sẽ tìm thấy hơn 20 biểu thức chính quy khác nhau trùng khớp với các số điện thoại,
bao gồm các biểu thức cho Anh, Úc, và nhiều số điện thoại khác.

Regulator được viết bởi Roy Osherove và có thể được download tại

[

http://regex.osherove.com]

.

A.3 Sinh mã với CodeSmith

A.3 Sinh mã với CodeSmith
CodeSmith là một công cụ sinh mã dựa-trên-template (khuôn mẫu), sử dụng một cú pháp
tương tự như ASP.NET để kết sinh bất kỳ kiểu mã hay text nào. Khác với nhiều công cụ sinh
mã khác, CodeSmith không yêu cầu bạn mô tả một bản thiết kế hay kiến trúc ứng dụng cụ thể.
Khi sử dụng CodeSmith, bạn có thể kết sinh mọi thứ, từ một tập hợp đơn giản, được-định-
kiểu-mạnh đến toàn bộ một ứng dụng.
Khi xây dựng một ứng dụng, bạn thường phải lặp đi lặp lại những tác vụ nào đó, chẳng hạn
viết mã truy xuất dữ liệu hay xây dựng các tập hợp tùy biến. CodeSmith đặc biệt hữu ích trong
những tình huống như vậy, vì bạn có thể viết các template để tự động hóa các tác vụ này, điều
này không chỉ cải thiện hiệu năng mà còn giúp bạn bớt nhàm chán.
CodeSmith có sẵn một số template, bao gồm những template cho tất cả các kiểu tập hợp .NET
cũng như những template để sinh thủ tục tồn trữ, nhưng sức mạnh thực sự của công cụ này
chính là khả năng tạo các template tùy biến.
Template của CodeSmith chỉ là file văn bản đơn thuần (có thể được tạo bằng công cụ soạn
thảo văn bản bất kỳ), với phần mở rộng là .cst.
Template được giới thiệu dưới đây sẽ nhận một chuỗi và rồi xây dựng một lớp dựa vào chuỗi
đó. Bước đầu tiên là viết phần header, phần này khai báo ngôn ngữ của template, ngôn ngữ
đích, và mô tả vắn tắt về template:

<%@ CodeTemplate Language="C#"

TargetLanguage="C#"

Description="Car Template" %>

Phần kế tiếp của template là các khai báo thuộc tính, các thuộc tính này sẽ được chỉ định mỗi
khi template chạy. Ví dụ dưới đây khai báo một thuộc tính chuỗi:

<%@ Property Name="ClassName" Type="String" Category="Context"

Description="Class Name" %>

Khai báo này sẽ làm cho thuộc tính

ClassName

xuất hiện trong cửa sổ thuộc tính của

CodeSmith để nó có thể được chỉ định khi template chạy.
Bước tiếp theo là xây dựng phần thân của template (với mã lệnh tương tự như ASP.NET). Như
bạn có thể thấy, template này nhận chuỗi nhập và sinh ra một lớp với tên đó. Trong phần thân
của template, các thẻ đóng và mở được sử dụng như trong ASP.NET. Trong template này, ta
chỉ chèn giá trị thuộc tính, nhưng cũng có thể sử dụng bất kỳ kiểu mã .NET nào bên trong các
thẻ này.

public sealed class <%= ClassName %>

{

private static volatile <%= ClassName %> _instance;

private <%= ClassName %>() {}

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.