Tôi có phương thức C# sử dụng object
làm vùng chứa chung để trả về mảng dữ liệu có thể khai báo bằng các kiểu dữ liệu khác nhau. Dưới đây là một ví dụ đơn giản của một phương pháp như:C# chuyển đổi một mảng được trả về dưới dạng đối tượng chung thành kiểu cơ bản khác
void GetChannelData(string name, out object data)
{
// Depending on "name", the underlying type of
// "data" can be different: int[], byte[], float[]...
// Below I simply return int[] for the sake of example
int[] intArray = { 0, 1, 2, 3, 4, 5 };
data = intArray;
}
tôi cần phải chuyển đổi tất cả các phần tử mảng trở lại double
nhưng cho đến nay tôi không thể tìm thấy một cách. Lý tưởng nhất là tôi muốn thực hiện một cái gì đó như:
object objArray;
GetChannelData("test", out objArray);
double[] doubleArray = Array.ConvertAll<objArray.GetType().GetElementType(), double>(objArray, item => (double)item);
Lỗi không đúng vì ConvertAll
không chấp nhận các loại được xác định khi chạy. Tôi cũng đã thử chuyển đổi trung gian thành biến số dynamic
, không có kết quả.
Có cách nào để thực hiện chuyển đổi loại như vậy theo cách đơn giản không?
Tất cả các câu trả lời được cung cấp đều hoạt động tốt; đã chấp nhận phiên bản @AlexWiese là câu trả lời chính xác khi anh ấy cung cấp giải pháp đó trước AnyName. Cảm ơn tất cả các bạn! – Metal76