如何动态地将对象强制转换为UnderlyingSystemType类?

时间:2012-03-22 12:35:32

标签: .net c#-4.0 reflection

我试图通过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 :(得分:0)

很难准确理解您的问题,但对于运行时类型转换,您可以使用Convert类。

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

阅读您的其他评论听起来实际上您想要将物品放入其中。您可能只能对它进行预测,如果不是,您可以尝试将seriesValues作为IEnumerable进行转换,然后对其进行预处理,或者尝试在其上调用GetEnumerator并以这种方式枚举值。

答案 1 :(得分:0)

你为什么不把它投到它的班级?

var seriesValues = (Nevron.Chart.NDataSeriesDouble) seriesType
    .GetProperty("Values").GetValue(hitTestResult.Series, null);

答案 2 :(得分:0)

最好的方法是向NDataSeries<T>添加非通用的接口。

如果它不是您的类,并且您在此类型上找不到任何非泛型接口,则需要使用反射。