Tôi đang viết một phương thức để thực hiện chuyển đổi kiểu thông minh - sử dụng ToString() nếu tham số kiểu xảy ra là một chuỗi, nếu không thì sẽ trả về null nếu dàn diễn viên không công việc. Về cơ bản nhận được nhiều thông tin trong số v
nó có thể mà không cần ném một ngoại lệ.Đúc chuỗi thành kiểu generic là một chuỗi
tôi kiểm tra xem T
thực sự là một string
trước khi tôi cố gắng dàn diễn viên, nhưng trình biên dịch vẫn không phải là một fan hâm mộ:
Cannot convert type 'string' to 'T'
Và đây là phương pháp của tôi:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
Cũng cho tôi biết nếu đây là một loại tội lỗi không thể tha thứ được. Tôi đang sử dụng nó để đối phó với một số cấu trúc dữ liệu có thể có các loại hỗn hợp.
Có các vấn đề khác. Phương thức của bạn không thể có kiểu trả về 'T?' Khi không có ràng buộc về 'T'. Ví dụ, không có gì gọi là 'string? 'Vì chuỗi là một kiểu tham chiếu. –