0

我的函数接收对象类型的参数“值”。我想将它分配给一个对象的成员,但转换不会隐式发生,所以我需要明确指定它。但是,我不想在对象中实际指定该成员的当前类型,所以我可以这样做:

positiveOrder.OrderID = (int)value;

但是,如果业务需求发生变化,并且 OrderID 以不同的方式生成和存储,例如 GUIDS 的字符串类型更改,我将不得不回到这里进行更改,这是不合需要的凝聚力。我已经尝试过各种代码排列,例如

positiveOrder.OrderID = value as thisOrder.OrderID.GetType();

或者

positiveOrder.OrderID = (typeof(thisOrder.OrderID)) value;

但似乎没有任何效果。关于以编程方式指定要转换为的类型的任何想法?它可以在编译时或运行时完成,因为 Order 类不会改变。

4

2 回答 2

2

如果positiveOrder.OrderID将始终为整数(即​​使以字符串表示),请勿将成员更改为整数以外的任何内容。相反,公开一些可以处理不同源类型的方法。

例如:

public void SetOrderID(object value)
{
    this.OrderID = Convert.ToInt32(value);
}

Convert.ToInt32()

于 2012-07-06T12:49:05.323 回答
0

就像是:

using System.Reflection;

receiver.GetType().GetProperty(propName).SetValue(receiver, value, null);
于 2012-07-06T12:48:55.743 回答