Tôi có một lớp trừu tượng. Hãy gọi nó là Lifeform. Nó trông giống như sau:Dịch vụ web ASMX không tuần tự hóa lớp cơ sở trừu tượng
public abstract class Lifeform {
public virtual int Legs { get; set; }
public virtual int Arms { get; set; }
public virtual bool Alive { get; set; }
}
(Thuộc tính ảo là do thực tế rằng tôi đang sử dụng nHibernate, mà than vãn nếu họ không tính ảo.)
sau đó tôi có một lớp học mà được thừa hưởng từ lớp Lifeform đó; chúng ta sẽ gọi nó là Human. Có vẻ như:
public class Human: Lifeform {
public virtual bool Hat { get; set; }
public virtual int Age { get; set; }
public virtual string Name { get; set; }
}
Mọi thứ đều đáng yêu, tôi có thể sử dụng các lớp học của mình, Con người nhận được chân, cánh tay và thuộc tính sống khi tôi đang sử dụng. Ngoại trừ, đó là, khi tôi cố gắng tạo một dịch vụ web bằng cách sử dụng lớp Human. Đối tượng được tuần tự hóa cho tôi Hat, Age, và Name - nhưng không có các thuộc tính Legs, Arms, hoặc Alive.
Tôi đã nhìn thấy một workaround rằng đề nghị sử dụng
[System.Xml.Serialization.XmlInclude(typeof(Human))]
Trên lớp cơ sở (Lifeform), nhưng điều đó có vẻ như một hack khủng khiếp vi phạm OO. Đặt các liên kết trên lớp cơ sở vào các lớp thừa hưởng nó? Eww.
Có ai gặp sự cố cụ thể này trước đây không? Có ý tưởng nào không? Tôi sẽ cung cấp thêm mã nếu một ví dụ chuyên sâu hơn sẽ giúp mô tả những gì tôi đang làm nhiều hơn.
Tôi đã gặp vấn đề tương tự và điều này đã giúp tôi giải quyết vấn đề. Cuối cùng tôi đã thiết lập thuộc tính trên lớp thay vì phương thức trả về nó. – Guffa