2010-05-04 15 views
9

Tiêu đề là hiển nhiên, tôi cần phải biết nếu các phương thức được tuần tự hóa cùng với các cá thể đối tượng trong C#, tôi biết rằng chúng không có trong Java nhưng tôi là một chút mới đối với C#. Nếu không, tôi có phải đặt lớp gốc với luồng byte (đối tượng tuần tự) trong một gói khi gửi nó tới một PC khác không? Lớp gốc có thể giống như một tệp DLL không?Các phương thức cũng được tuần tự hóa cùng với các thành viên dữ liệu trong .NET?

+1

Để biết thông tin, có ** rất nhiều ** API tuần tự hóa. Chúng hoạt động khác nhau - nó * âm thanh * giống như bạn đang sử dụng 'BinaryFormatter', nhưng nói chung bạn nên cố gắng rõ ràng về API bạn đang sử dụng. –

+0

Bạn chưa nhận được bình luận của mình? – Lisa

+0

BTW, serialization gần như không có gì để làm với C#, và tất cả mọi thứ để làm với. –

Trả lời

14

Không. Thông tin loại được đăng, cùng với trạng thái. Để deserialize dữ liệu, chương trình của bạn sẽ cần phải có quyền truy cập vào các hội đồng có chứa các loại (bao gồm cả phương pháp).

+0

Bạn đang nói lắp ráp sao cho các phương thức của lớp gốc như là một tệp DLL sẽ hoạt động tốt, đúng không? – Lisa

+1

@Shaza: Có. Cả hai bên (serialization và deserialization) cần phải có assembly (thường là DLL) có chứa kiểu được serialized. Điều này cần phải được phát hiện để loại được instanced một cách chính xác bởi các lớp serialization. –

2

Phương thức không được sắp xếp theo thứ tự.

Tôi không biết về kịch bản của bạn, nhưng đưa vào một thư viện (assembly/dll) và sử dụng nó ở đầu kia để deserialize được tất cả các bạn.

Ps. bạn có lẽ nên tạo một số câu hỏi thêm một số câu hỏi với các yếu tố liên quan đến kịch bản của bạn. Nếu bạn dự định gửi động & chạy mã, bạn có thể tạo hậu quả bảo mật khủng khiếp.

1

Tôi đã nhầm lẫn khi .NET xuất hiện lần đầu tiên với tuần tự hóa. Tôi nghĩ nó xuất phát từ thực tế là hầu hết sách và hướng dẫn đề cập rằng nó cho phép bạn serialize 'các đối tượng' như XML và di chuyển chúng xung quanh, thực tế là bạn đang thực sự hydrating các giá trị của đối tượng của bạn để bạn có thể khử nước chúng sau này. không có lúc nào bạn đang lưu toàn bộ đối tượng vào đĩa vì nó sẽ yêu cầu dll và không được chứa trong tệp XML.

9

Nó có thể dễ hiểu hơn nếu bạn đã học C. Một lớp học như

class C 
{ 
    private int _m; 
    private int _n; 

    int Meth(int p) 
    { 
     return _m + _n + p; 
    } 
} 

là đường cơ bản cú pháp cho

typedef struct 
{ 
    int _m; 
    int _n; 
    // NO function pointers necessary 
} C; 

void C_Meth(C* obj, int p) 
{ 
    return obj->_m + obj->_n + p; 
} 

Đây thực chất là như thế nào phương pháp không ảo được thực hiện trong ngôn ngữ hướng đối tượng. Điều quan trọng ở đây là các phương thức là không phải là một phần của dữ liệu cá thể.

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