Tôi đã không ngủ trong một thời gian vì vậy điều này có thể dễ dàng hơn tôi nghĩ.Đối tượng đúc thành kiểu chung
Tôi có một lớp chung đó là nhiều hay ít này:
public class Reference<T> where T : APIResource //<- APIResource is abstract btw
{
private T _value = null;
public T value
{
get { return _value; }
}
}
Ở những nơi khác, trong một phương pháp tùy chỉnh serialize, ai đó đang đi qua trong một object
mà thực sự là một thể hiện của Reference<(something)>
. Tôi chỉ đơn giản muốn bỏ qua cho "giá trị" tài sản mà mỗi đối tượng Reference<>
có, vì vậy tôi muốn đi:
string serialize(object o)
{
return base.serialize(((Reference<>) o).value);
}
Tất nhiên, cuộc sống không phải là đơn giản bởi vì như trình biên dịch đặt nó:
using the generic type "Reference<T>" requires 1 type arguments
Tôi có thể làm những gì tôi muốn làm?
Tôi biết hoàn toàn không có gì về giao diện chung biến đổi nên tôi thực sự vui vì tôi đã chuyển sang SO. Tôi đã phải sửa đổi lớp chung cho phù hợp: 'public class Reference: IReference trong đó T: APIResource {...}'. Điều này cho phép tôi truy xuất thuộc tính Value với '((IReference ) o) .Value' –
Alain