01/10/2018, 16:47
Tại sao cast không thành công?
Mình đã viết toán tử ép kiểu trong lớp ObjectData
:
public static explicit operator SimpleData(ObjectData Input)
{
return new SimpleData(Input.ToString());
}
Values[i]
là đối tượng lớp abstract, chỉ có 2 lớp ObjectData
và SimpleData
kế thừa lớp đó.
Bài liên quan
Có thể cast con thành cha chứ không thể cast cha thành con được
vì con có đầy đủ thuộc tính và phương thức của cha, còn ngược lại cha thì không chắc có đủ thuộc tính hay phương thức của con nên không case được
Đó là cast mặc định, còn mình đã nạp chồng toán tử rồi mà. Khi đó không cần có quan hệ kế thừa cũng cast được. 2 lớp này không cái nào kế thừa cái nào cả.
Để mình sửa lại câu hỏi cho rõ.
nghĩa là nó k có biết gì về cái operator mà bạn định nghĩa, do đó implicit cast được sử dụng. Khi implicit cast được sử dụng thì bạn biết điều gì xảy ra với code của bạn rồi đấy
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/explicit
Khi mình viết cả explicit và implicit, kết quả đều như vậy
Cách đó cũng lỗi vl bác ạ. Vì
Values
nó có thể là 1 trong 2 kiểu chứ không phải chỉ có kiểuObjectData
đâu. Giờ thì nó lại thành Unable to cast object of type ‘SimpleDataModel.SimpleData’ to type ‘SimpleDataModel.ObjectData’Nhưng mà đến đây thì mình cũng tự giải thích đc rồi, không biết có đúng không. Nếu viết implicit thì đoạn cast tường minh bị lỗi, viết explicit thì đoạn cast ngầm định bị lỗi, viết cả 2 thì IDE báo lỗi trùng.
Thôi, đành viết try-catch bắt InvalidCastException vậy.
Hi Trần Hoàn.
Mình đang phát minh lại cái xe đạp mà :))
Với lại mình đang tìm cách để phần Values có thể chứa cùng lúc 2 kiểu dữ liệu khác nhau là string và dic, và có thể cả array để xây dựng hệ quản trị CSDL no SQL