Я пишу оболочку C # для сторонней библиотеки, которая читает как отдельные значения, так и массивы с аппаратного устройства, но всегда возвращает массив object [] даже для одного значения. Это требует повторных обращений к объекту [0], когда я хочу, чтобы конечный пользователь мог использовать обобщенные значения для получения массива или одного значения.
Я хочу использовать дженерики, чтобы вызываемый мог использовать оболочку следующими способами:
MyWrapper<float> mw = new MyWrapper<float>( ... );
float value = mw.Value; //should return float;
MyWrapper<float[]> mw = new MyWrapper<float[]>( ... );
float[] values = mw.Value; //should return float[];
В MyWrapper у меня есть свойство Value в следующем виде:
public T Value
{
get
{
if(_wrappedObject.Values.Length > 1)
return (T)_wrappedObject.Value; //T could be float[]. this doesn't compile.
else
return (T)_wrappedObject.Values[0]; //T could be float. this compiles.
}
}
Я получаю ошибку компиляции в первом случае:
Невозможно преобразовать тип
'object []' в 'T'
Если я изменю MyWrapper.Value на T [], я получу:
Невозможно преобразовать тип
'object []' to 'T []'
Есть идеи, как достичь моей цели? Спасибо!