PDA

View Full Version : Cần trợ giúp khẩn cấp



anhdh
30-10-2010, 18:07
Dear all,

Mình cần thực hiện chức năng thế này trong C#, bạn nào biết giúp mình nhé, vì mình không biết dùng từ khóa nào trong trường hợp này để search trên google nữa. Mình đang làm một ứng dụng, các chức năng (module) mình làm hoàn toàn bằng user control (không dùng form), chỉ dùng một form chính có XtraNavBar, khi click từng item trên NavBar thì sẽ gọi module cụ thể. Giớ mình muốn xử lý cái này hoàn toàn động, nghĩa là lấy từ database load lên.

Ví dụ: trong ứng dụng của mình có 2 module: NhanVien (cập nhật thông tin nhân viên) và DonVi (cập nhật thông tin đơn vị), 2 user control chính lần lượt là NhanVien.cs và DonVi.cs. Khi chương trình load lên, form chính sẽ có 2 menu được load lên từ database có tên: Nhân viên, Đơn vị. Click vào Item nào thì load ra module đó. Như vậy, thông tin module mình sẽ lưu trong database như sau:
Modules
- MID
- Title
- ClassName
- Description
- ...

Vậy khi click vào một menu mà thông số là một class name có dạng "NhanVien.cs" thì làm thế nào để có thể tạo ra đối tượng ấy?

freshgraduate09
30-10-2010, 20:12
Dear all,

Mình cần thực hiện chức năng thế này trong C#, bạn nào biết giúp mình nhé, vì mình không biết dùng từ khóa nào trong trường hợp này để search trên google nữa. Mình đang làm một ứng dụng, các chức năng (module) mình làm hoàn toàn bằng user control (không dùng form), chỉ dùng một form chính có XtraNavBar, khi click từng item trên NavBar thì sẽ gọi module cụ thể. Giớ mình muốn xử lý cái này hoàn toàn động, nghĩa là lấy từ database load lên.

Ví dụ: trong ứng dụng của mình có 2 module: NhanVien (cập nhật thông tin nhân viên) và DonVi (cập nhật thông tin đơn vị), 2 user control chính lần lượt là NhanVien.cs và DonVi.cs. Khi chương trình load lên, form chính sẽ có 2 menu được load lên từ database có tên: Nhân viên, Đơn vị. Click vào Item nào thì load ra module đó. Như vậy, thông tin module mình sẽ lưu trong database như sau:
Modules
- MID
- Title
- ClassName
- Description
- ...

Vậy khi click vào một menu mà thông số là một class name có dạng "NhanVien.cs" thì làm thế nào để có thể tạo ra đối tượng ấy?

dùng cơ chế .NET Reflection. Chém gió tí chứ ko có time mô tả chi tiết. Anyway hope this help ^^

anhdh
30-10-2010, 20:45
Phải thế này không:



private void LoadModule(string ModuleName)
{
Type type = Type.GetType(ModuleName);

if(type.IsClass)
{
object obj = Activator.CreateInstance(type);
gcContainer.Controls.Clear();
gcContainer.Controls.Add(obj);
}