C# 铸造到一个属性';使用Convert.ChangeType创建s类型

C# 铸造到一个属性';使用Convert.ChangeType创建s类型,c#,.net,object,properties,casting,C#,.net,Object,Properties,Casting,我需要遍历对象的属性并获得每个基本属性(和字符串)的值。我已经准备好了处理索引器、复杂对象和可为空的原语的代码,所以不用担心这些(为了保持简单,我从代码中排除了这些)。我遇到的问题是当我使用Convert.ChangeType()时。变量“value”的类型始终为System.Object。如何将其转换为“SomeObject”对象中所示的字符串或int 你可以这样做 if (propertyType == typeof(int)) { var value = (int)Convert.

我需要遍历对象的属性并获得每个基本属性(和字符串)的值。我已经准备好了处理索引器、复杂对象和可为空的原语的代码,所以不用担心这些(为了保持简单,我从代码中排除了这些)。我遇到的问题是当我使用Convert.ChangeType()时。变量“value”的类型始终为System.Object。如何将其转换为“SomeObject”对象中所示的字符串或int


你可以这样做

if (propertyType == typeof(int))
{
    var value = (int)Convert.ChangeType(propertyInfo.GetValue(testo, null), propertyType);
}
else if(propertyType == typeof(string))
{
    var value = (string)Convert.ChangeType(propertyInfo.GetValue(testo, null), propertyType);
}
if (propertyType == typeof(int))
{
    var value = (int)Convert.ChangeType(propertyInfo.GetValue(testo, null), propertyType);
}
else if(propertyType == typeof(string))
{
    var value = (string)Convert.ChangeType(propertyInfo.GetValue(testo, null), propertyType);
}