2011-11-29 30 views
6

Tôi đã khai báo dữ liệu bên trong bằng cách sử dụng khối gọi phương thức Vứt bỏ ở cuối phạm vi.Có thể định vị bên trong bằng cách sử dụng?

using (DataTable dt = Admin_User_Functions.Admin_KitItems_GetItems()) 
      { 
       ... 
      } 

Nhưng trong phản xạ, doesnt DataTable seens có Dispose chức năng

enter image description here

Làm thế nào vậy?

+1

Bằng theo cách này, hãy xem

+0

Trình phản xạ này hiển thị các phương pháp. Bạn có thể chuyển đổi "Thành viên thừa kế" (Ctrl + I) để hiển thị hoặc ẩn các phương pháp. – AMissico

+2

Trình phản chiếu> Công cụ> Tùy chọn> Trình duyệt> Chọn "Hiển thị thành viên được kế thừa". – AMissico

Trả lời

3

System.Data.DataTable mở rộng System.ComponentModel.MarshalByValueComponent và, MarshalByValueComponent triển khai IDisposable.

Trình phản xạ sẽ không hiển thị các phương pháp của loại cơ sở trừ khi chúng được ghi đè lên trong loại dẫn xuất.

+0

+1 vì bạn là người đầu tiên đã nắm bắt đúng! – sll

+0

Trình phản xạ hiển thị các phương thức. Bạn có thể chuyển đổi "Thành viên thừa kế" (Ctrl + I) để hiển thị hoặc ẩn các phương pháp. – AMissico

-1

Tại sao bạn đang cố gắng xử lý DataTable? Bạn nên xóa nó khỏi DataSet nếu bạn thực sự muốn điều này xảy ra.

+0

-1; DataTable độc ​​lập với một DataSet. – AMissico

3

DataTable được kế thừa từ MarshalByValueComponent lớp thực hiện giao diện IDisposable (xem bên dưới), C# cho phép gọi phương thức công khai lớp cơ sở cho các phiên bản của lớp dẫn xuất.

public class DataTable : MarshalByValueComponent, 
    IListSource, ISupportInitializeNotification, 
    ISupportInitialize, ISerializable, IXmlSerializable 

public class MarshalByValueComponent : 
    IComponent, IDisposable, IServiceProvider 

khối mã của bạn sẽ được trình bày dưới mui xe như hình dưới đây, vì vậy nó đảm bảo rằng Dispose() phương pháp sẽ được gọi là:

{ 
    DataTable dt = Admin_User_Functions.Admin_KitItems_GetItems() 

    try 
    { 
    // .. code inside using statement 
    } 
    finally 
    { 
    if (dt != null) 
     ((IDisposable)dt).Dispose(); 
    } 
} 

Xem MSDN để biết thêm chi tiết: using Statement

+1

Tôi biết tuyên bố sử dụng ..... p..s cảm ơn. cho câu trả lời +1. –

Các vấn đề liên quan