Tôi đang đối mặt với một vấn đề mà tôi không biết làm thế nào để giải quyết và hy vọng cộng đồng có thể giúp đỡ.Downcasting in C#
Tôi đang viết một ứng dụng quản lý đối tượng "Chì". (Đây là những khách hàng tiềm năng.) Một phần của chương trình của tôi sẽ nhập các khách hàng tiềm năng từ một tệp văn bản. Bây giờ, các tập tin văn bản có chứa rất nhiều tiềm năng dẫn, một số trong đó tôi sẽ muốn nhập khẩu và một số trong đó tôi sẽ không.
Để dễ lập trình (và sử dụng), tôi đang phân tích cú pháp tệp văn bản thành đối tượng < Chì > và sử dụng DataGridView để hiển thị khách hàng tiềm năng bằng cách đặt thuộc tính DataSource của DataGridView.
Điều tôi muốn làm là thêm một cột vào lưới, được gọi là "Nhập", với hộp kiểm mà người dùng có thể kiểm tra để cho biết có nên nhập từng đầu mối hay không.
Suy nghĩ đầu tiên của tôi là để lấy được một lớp từ chì:
public Class LeadWithImportCheckbox : Lead
{
bool bImport = false;
public bool Import { get { return bImport;} set { bImport = value;} } }
Tuy nhiên, động cơ phân tích cú pháp trả về một danh sách các đối tượng chì. Tôi không thể downcast một LeadWithImportCheckbox. Điều này không thành công:
LeadWithImportCheckbox newLead = (LeadWithImportCheckbox)LeadFromParsingEngine;
Đây là dàn diễn viên không hợp lệ.
Các tùy chọn khác tôi thấy là để tạo ra một constructor cho LeadWithImportCheckbox:
public LeadWithImportCheckbox(Lead newlead)
{
base.Property1 = newlead.Property1;
base.Property2 = newlead.Property2;
....
base.Property_n = newlead.Property_n;
}
Đây là vấn đề đối với hai lý do. Một, đối tượng Lead có vài chục thuộc tính và viết hàm khởi tạo này là một PITA.
Nhưng tệ hơn, nếu tôi thay đổi cấu trúc bên dưới của Lead, tôi cần phải nhớ quay lại và thay đổi hàm tạo này cho LeadWithImportCheckbox. Đây là mối nguy hiểm đối với việc bảo trì mã của tôi.
Có cách nào tốt hơn để hoàn thành mục tiêu của tôi không?
Chỉ cần suy nghĩ ngẫu nhiên: có thể bạn có thể muốn theo dõi xem khách hàng tiềm năng đã "nhập" hay chưa (nhập bằng tay)? Nói cách khác, nó có thể khả thi để làm cho 'được nhập khẩu 'một tài sản cố định của' Chì'? – Adrien
Tôi không nghĩ đó sẽ là thứ tôi muốn theo dõi. Tôi thấy những vấn đề này sẽ giải quyết nhưng nó thực sự không phải là một phần của những gì tôi thực sự muốn thực hiện. –