Tôi có 2 loại: BaseQuestion
và Question
. Question
kế thừa một số thuộc tính từ BaseQuestion
. Bây giờ tôi đã tạo một API Web để tạo sẵn một BaseQuestion
. Kiểu dữ liệu Question
có các thuộc tính bổ sung mà tôi không muốn cung cấp. Tôi có một phương thức truy xuất số Question
và kế hoạch ban đầu của tôi là hoàn toàn đưa nó lên BaseQuestion
. Tôi nghĩ rằng nó sẽ mất tất cả các thuộc tính bổ sung mà tôi không muốn truy cập và tôi có thể trả lại nó. Vâng, nó không. Đây là những gì tôi làm:C#: Superclass vẫn có thông tin lớp con sau upcast
Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
Loại bq vẫn là "Câu hỏi". Tôi không thể truy cập vào các thuộc tính BaseQuestion, nhưng tôi vẫn có thể nhìn thấy chúng trong trình gỡ rối và chúng nằm trong đầu ra JSON mà tôi gửi cho máy khách.
Bất kỳ ý tưởng nào về cách tôi có thể "buộc" bq phải thuộc loại BaseQuestion
và không có bất kỳ thuộc tính nào được xác định trong lớp con?
Các loại bq biến là BaseQuestion. Kiểu thời gian chạy của đối tượng mà bq là Câu hỏi. Không chắc chắn ý bạn là gì bởi "force bq to type BaseQuestion".Bạn sẽ chỉ có thể truy cập vào các thành viên BaseQuestion thông qua biến bq. – lesscode
Tôi nghĩ rằng sự nhầm lẫn của bạn không hiểu rằng những gì bạn đã đưa ra là ** tài liệu tham khảo ** cho các đối tượng trong bộ nhớ. –
Simon, điểm tốt. Sau đó, hãy để tôi rephrase: Làm thế nào tôi có thể tạo một đối tượng mới của loại Câu hỏi và tự động sao chép tất cả các giá trị tài sản? Bởi tự động tôi có nghĩa là tôi không ** muốn ** thực hiện nó. IMHO kịch bản này không phải là hoàn toàn duy nhất cho tình hình của tôi và nên được bao phủ bởi .NET. – Jan