Как динамически преобразовать объект в класс UnderlyingSystemType? - PullRequest
0 голосов
/ 22 марта 2012

Я пытаюсь получить значения возвращаемого объекта с помощью метода отражения PropertyInfo.GetValue(), который содержит объект одного из следующих классов:

   Class NDataSeriesDouble: NDataSeries<double>
    {}

    Class NDataSeriesString: NDataSeries<string>
    {}

// код для получения значения списка во время выполнения

GetNthValueOfSereis(int n)
{
   NHitTestResult hitTestResult = chartControl.HitTest(mouseXPoint, mouseYPoint)
    // Get the sereis type object from Base class of this.
    Type seriesType = hitTestResult.Series.GetType();
    object seriesValues=  seriesType.GetProperty("Values")
                .GetValue(hitTestResult.Series, null) 

**///How i get value from this object seriesValues**

}

объект seriesValues ​​содержит объект класса NDataSeriesDouble или NDataSeriesString.

Любое предложение будет оценено.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 22 марта 2012

Почему бы вам просто не привести его к его классу?

var seriesValues = (Nevron.Chart.NDataSeriesDouble) seriesType
    .GetProperty("Values").GetValue(hitTestResult.Series, null);
0 голосов
/ 23 марта 2012

Лучший способ - добавить интерфейс к NDataSeries<T>, который не является универсальным.

Если это не ваш класс и если вы не найдете никаких неуниверсальных интерфейсов для этого типа,вам нужно использовать отражение.

0 голосов
/ 22 марта 2012

Трудно понять, чего именно вы хотите от своего вопроса, но для преобразования типов во время выполнения вы можете использовать класс Convert .

object result = Convert.ChangeType(value, typeof(MyTypeToConvertTo));

Читая ваши другие комментарии, звучит так, как будто вы действительно хотите получить предметы внутри. Вы могли бы просто иметь возможность использовать его с помощью foreach, если не можете попробовать преобразовать seriesValues ​​в IEnumerable, а затем выполнить foreach через него, в качестве альтернативы попробуйте вызвать для него GetEnumerator и перечислить значения таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...