Tải bản đầy đủ (.pdf) (5 trang)

Tài liệu Assembly part 4 pptx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (144.54 KB, 5 trang )




Thêm tài nguyên vào Assembly

Trong phần này chúng ta sẽ xem sự hỗ trợ của kiến trúc .NET về các files nguồn, chúng
sử dụng để dễ dàng quốc tế hoá , và sự hoạt động của vệ tinh assemblies.
Thuận lợi của sử dụng files tài nguyên thay cho lưu trữ một cách trực tiếp chuỗi hoặc
hình ảnh trong chương trình chính là những lập trình không rành có thể dễ dàng hơn thay
đổi các files tài nguyên này; mặc dù nó cần một programmer, hoặc tối thiể
u biết sử dụng
của một vài file batch để biên dịch lại chúng vào trong các file tài nguỵên mới. Nó không
cần thiết tìm kiếm sourcecode cho chuỗi strings khi sử dụng các file tài nguyên cuối cùng
chúng ta có thể dùng assembly vệ tinh để xác định vị trí mà chúng giữ tài nguyên.
Trong phần này chúng ta sẽ học:

Tạo file tài nguyên, sử dụng tiện ích resgen và đối tượng ResourceWriter

Sửng dụng file tài nguyên và truy xuất nhúng tài nguyên với lớp
ResourceManager

Định vị bằng sử dụng (satellite) assemblies vệ tinh

Sự định vị Visual Studio .NET hỗ trợ cho các ứng dụng Windows
Tạo Files tài nguyên
Files tài nguyên chứa đựng nhiều thứ như hình ảnh các bảng chuổi. Một file tài
nguyên được tạo ra sử dụng một file văn bản bình thường hoặc một file .resX dùng
XML. Chúng ta bắt đầu xét file văn bản
Một tài nguyên nhúng một bảng chuổi có thể được tạo có thể sử dụng file văn bản
bình thường. file này chỉ nhận chuổ
i nhập vào. Khoá là tên nó có thể được sử dụng từ 1


chương trình để nhận giá trị. Khoảng trắng được dùng trong cả khoá và giá trị.
Ví dụ trình bày 1 bảng chuổi trong file strings.txt:
Title = Professional C#
Chapter = Assemblies
Author = Christian Nagel
Publisher = WROX Press
ResGen
Tiện ích resgen.exe sử dụng tạo một file tài nguyên strings.txt. Thực hiện như sau:
resgen strings.txt
Bạn có thế download file strings.resx
có kèm theo tài liệu để tham khảo
ResourceWriter
Thay vì sử dụng tiện ích resgen để xây dựng các file tài nguyên, thì ta có thể
dùng ResourceWriter. ResourceWriter là một lớp trong namespace System.Resources nó
cũng hỗ trợ hình ảnh và các loại tài nguyên khác.
Thí dụ dưới Chúng ta tạo một đối tượng ResourceWriter rw sử dụng một constructor
tên file Demo.resources. Sau khi tạo thể hiện số tài nguyên có thể nâng lên 2GB trong
trong tổng kích thước có thể thêm vào dùng phương thức AddResource() của lớp
ResourceWriter. Thông số đầu tiên là khoá cụ thể và thông số thứ hai là giá trị cụ thể
. Tài
nguyên hình ảnh thêm vào nhờ lớp Image. Để dùng lớp Images, System.Drawing
assembly phải được tham chiếu tới. chúng ta cũng mở namespace System.Drawing bằng
chỉ dẫn.Đoạn mã sau:
using System;
using System.Resources;
using System.Drawing;
class Class1
{
[STAThread]
public static void Main()

{
ResourceWriter rw = new ResourceWriter("Demo.resources");
using (Image image = Image.FromFile("logo.gif"))
{
rw.AddResource("WroxLogo", image);
rw.AddResource("Title", "Professional C#");
rw.AddResource("Chapter", "Assemblies");
rw.AddResource("Author", "Christian Nagel");
rw.AddResource("Publisher", "Wrox Press");
rw.Close();
}
}
}
Khi bạn biên dịch chương trình sẽ tạo file demo.resources .Tài nguyên này sẽ được sử
dụng trong một ứng dụng Windows .

Sử dụng file tài nguyên
File tài nguyên có thể được thêm vào assemblies sử dụng Assembly Generation Tool
Al.exe dùng chọn lựa /embed option, hoặc trực tiếp dùng Visual Studio .NET. Để xem
Visual Studio .NET sử dụng như thế nào , Tôi tạo một C# Windows Application và gọi
nó là ResourceDemo:
Trên menu của Solution Explorer (Add | Add Existing Item), Trước đây đã tạo file
Demo.resources có thể đã được thêm vào dự án rồi. Mặc định BuildAction của tài nguyên
này được thiết lập trong Embedded Resource, Nên tài nguyên này được nhúng vào output
assembly:


Quốc tế hoá (Internationalization and Resources)
Khi viết ứng dụng dùng phân phối trên thế
giới chúng ta luôn phải lưu ý sự khác nhau về

văn minh văn hoá, vùng địa lý của từng miền. . . phải trả lời được bạn là ai và bạn đang ở
đâu, tất cả phải mang tính quốc tế hoá .
Một số định dạng khác nhau về số giữa các nước:
US English 123,456,789.23
German 123.456.789,23
Swiss German 123'456'789.23
French 123 456 789,23
Định dạng về ngày :
US English 2/13/2002 Wednesday, February 13, 2002
UK English 13/02/2002 13 February 2002
German 13.02.2002 Mittwoch, 13. Februar 2002
French 13/02/2002 Mercredi 13 fevrier 2002
Phong tục thói quen (Cultures)
Culture name Culture
en English
en-GB English (United Kingdom)
en-US English (United States)
fr French
fr-FR French (France)
de German
Ví dụ kế tiếp tôi sử dụng Console Project. Trong đoạn mã trên trình bày một số được
định dạng khác nhau giữa các quốc gia do khác nhau về văn hoá.
using System;
using System.Globalization;
using System.Threading;

namespace Wrox.ProCSharp.Assemblies.Localization
{
class Class1
{

[STAThread]
static void Main(string[] args)
{
int val = 1234567890;
// culture of the current thread
Console.WriteLine(val.ToString("N"));
// use IFormatProvider
Console.WriteLine(val.ToString("N", new CultureInfo("fr-fr")));
// change the culture of the thread
Thread.CurrentThread.CurrentCulture = new CultureInfo("de-de");
Console.WriteLine(val.ToString("N"));
}
}
}
Kết quả trả về màn ảnh dưới đây. Bạn có thể so sánh kết quả ra từ danh sách khác nhau
của US English, French, và German

Bạn có thể xem download code
trong chương trình kèm theo sách


×