大家好,我正在尝试将两个对象转换为基于属性反射信息的特定类型。我想动态地做到这一点,所以我不需要一堆开关案例,对于每个类型,这两个对象都可以在这个类中。总体而言,它们将主要是 int 或 float。目前我正在尝试使用“var”和“object”关键字来保存传入的调整值和属性原始值。
// .. snip
/* Get property information. */
PropertyInfo propInfo = classObj.GetType().GetProperty("property-name");
if (propInfo == null)
continue;
/* Prepare object values. */
object orgVal = propInfo.GetValue( classObj, null );
object adjVal = Convert.ChangeType( strAdjust, propInfo.GetType(), new CultureInfo("en-us"));
// .. math on objects here
// ex. orgVal += adjVal;
// .. snip
传入的调整值是一个字符串,但是是“int”或“float”格式,因此很容易转换。所有这一切都很好,只是允许使用新的调整值调整原始值的铸件才是问题所在。
我知道 .NET 4.0 有一个“动态”关键字可以完成这样的事情,但目前我坚持使用 3.5。
两个对象都将使用属性信息 propInfo.GetType() 中的类型。
对此的任何帮助将不胜感激,我相信我可能在这里忽略了一个基本的事情来完成这项工作。提前致谢。
-CK
编辑:
忘了说,抱歉,这是在 Zune HD 上开发的,所以我可以访问的框架相当有限,可以/不能使用。