Posted by Mr.NanhTrang on June 24th, 2008
Extension Method là điểm mới của .NET 3.0+, nếu bạn sử dụng trong .NET 2.0 với Visual Studio thì bạn sẽ được “tặng” lỗi liền :

Extension Methods sau khi compile thì thực chất chỉ là static methods, tuy nhiên để giúp IDE (Visual Studio) có thể nhận biết được static methods nào là extension methods để cho IDE có thể biết được kiểu dữ liệu nào có extension method nào (giúp IDE có list ra các hàm, cũng như không báo lỗi và compile được khi viết theo cú pháp của extension methods), compiler đã thêm attribute: ExtensionAttribute cho các static method (cũng như static class và assembly chứa nó) là extension methods. Thật không may, cái attributes này lại nằm trong System.Core.dll component (.Net 3.5 - cũng phải thôi, M$ không thể thêm cái attribute mới này vào trong các component đã được publish của .Net 2.0 được), vì thế khi chúng ta sử dụng Extension Methods cho project .net 2.0 sẽ nhận được thông báo lỗi như trên.
Read the rest of this entry »
Posted by Nguyễn Hùng Cường on June 15th, 2008
Vấn đề
Như các bạn đã biết thì khi ta muốn thêm một method nào đó vào một class thì bạn phải sửa code và biên dịch lại assembly chứa class đó. Rõ ràng điều này chỉ “tạm chấp nhận” khi code đó chính là do bạn tạo ra, do bạn giữ bản quyền chứ không thể khi ta sử dụng các library của người khác.
Thật ra, nếu nói cho đúng thì có 2 cách mà bạn có thể workaround cái vấn đề này :
- Thứ nhất. Inherit cái class bạn muốn thêm method
- Thứ hai. Tạo một static class mới với đầu vào là class muốn thêm method và đầu ra là class sau khi bạn đã thao tác trong method này. (thường thấy mọi người hay dùng kiểu này)
Tuy nhiên chúng ta hãy xem xét các mặt không có lợi khi áp dụng các phương thức trên :
- Phương thức 1 : Vấn đề xảy ra khi class bạn muốn thêm method không cho inherit. Tiêu biểu là sealed classes như String, Int16, Int32, … Hơn nưã giả sử inherit được thì nó lại gây khó khăn khi sử dụng, ví dụ như thay vì dùng một cách tự nhiên là String thì bạn phải sử dụng MyString, ModedString, …. Không hề tự nhiên.
- Phương thức 2 : Có thể tạm chấp nhận được nhưng nó đi ngược với tư tưởng hướng đối tượng, cách viết method sẽ trở về “nguyên thủy” khi làm việc với struct, function, … Bạn sẽ phải String x = MyClass.Modify(inputString) thay vì x = x.Modify()
Và điều này đã được giải quyết khá gọn gàng trong .NET 3.5 (thực ra là từ .NET 3.0) với Extenstion Methods
Read the rest of this entry »
Posted by Nguyễn Hùng Cường on March 2nd, 2008
PHẦN 1 : Vấn đề “bản địa hóa” một phần mềm - Phần1
Theo như cách localize nhc đã bàn ở phần 1, việc localize một software sẽ phụ thuộc hoàn toàn vào company hoặc team phát triển phần mềm đó. Điều này sẽ có rất nhiều hạn chế vì một team hoặc ngay cả một company cũng không thể kiếm đủ số người biết nhiều thứ tiếng để có thể localize ! Do đó cách hay nhất là “nhờ” các hãng thứ ba hoặc các free developer “phát triển dùm”. Để thực hiện điều này, MS đã cung cấp sẵn cho bạn một công cụ đó là WinRes (nằm trong %Install Dir%\SDK\v2.0\Bin\)

Giao diện GUI cho phép bạn edit trực tiếp, rất dễ sử dụng. Sau khi edit xong bạn chỉ việc save lại file *.resx theo ngôn ngữ mong muốn là xong

Bạn có thể download WinRes tại đây
Posted by Nguyễn Hùng Cường on February 15th, 2008
I- ĐẶT VẤN ĐỀ:
Khi bạn release một phần mềm, tiêu chí đặt ra bao giờ cũng là: phải làm sao giúp đỡ tốt nhất cho người dùng. “Người dùng là thượng đế”. Và tiêu chí này được thể hiện rõ trong việc thiết kế giao diện (design user interface). Về vấn đề design UI sao cho thuận tiện cho người dùng phụ thuộc vào rất nhiều tiêu chí. Ở đây nhc chỉ xin được đề cập đến một vấn đề nhỏ là “bản địa hóa” phần mềm (hay nói riêng là Việt hóa, Anh hóa, Pháp hóa, …. phần mềm).
Tuy vấn đề cross-language không quan trọng như cross-flatform, nhưng cũng không phải vì thế mà ta có thể xem nhẹ nó được. Vì nó có thể quyết định sự thất bại hay thành công của một phần mềm. Ví dụ khi bạn viết một chương trình phần mềm, bạn sử dụng giao diện Tiếng Anh, thì rõ ràng bạn đã tự thu hẹp “tầm sử dụng” của phần mềm, vì đối với một người Việt không rành về Tiếng Anh thì làm sao sử dụng ứng dụng của bạn được ? Hoặc ngược lại , bạn sử dụng giao diện Tiếng Việt thì điều tương tự cũng xảy ra. Vậy làm cách nào giải quyết vấn đề này ? Bạn sẽ lập trình ra 2 phiên bản chăng? Một bản cho người Việt, một bản cho người Anh ? Rõ ràng là không khả thi !!!
II - GIẢI QUYẾT VẤN ĐỀ:
Bạn hoàn toàn có thể giải quyết vấn đề trên hoàn toàn dễ dàng !!! Thực ra, ngoài việc hỗ trợ đa ngôn ngữ thì cách làm dưới đây còn có tính linh động cao hơn nữa là nó cho phép bạn tùy biến giao diện dựa vào ngôn ngữ mà hệ điều hành bạn đang sử dụng. Lấy ví dụ như thế này: máy của anh rongchaua sử dụng tiếng Đức ( he he :D), khi đó chúng ta sẽ thiết kế giao diện hỗ trợ tiếng Anh và tiếng Đức. Khi anh rồng run phần mềm, chúng ta sẽ kiểm tra ngôn ngữ hệ điều hành anh rồng đang sử dụng. Nếu đúng là tiếng Đức, ta sẽ khởi tạo giao diện tiếng Đức hù anh rồng chơi :)). Thấy là hết hồn . Ha ha :D.
Thui chúng ta tiếp tục :D. Ở bài viết này nhc sử dụng Visual Studio 2005, .NET 2.0, và yêu cầu đặt ra là Việt hóa.
Read the rest of this entry »
Recent Comments