【发布时间】:2012-07-06 22:10:43
【问题描述】:
我的函数接收对象类型的参数“值”。我想将它分配给一个对象的成员,但转换不会隐式发生,所以我需要明确指定它。但是,我不想在对象中实际指定该成员的当前类型,所以我可以这样做:
positiveOrder.OrderID = (int)value;
但是,如果业务需求发生变化并且 OrderID 以不同的方式生成和存储,例如 GUIDS 的字符串类型更改,我将不得不回到这里进行更改,这是不合需要的凝聚力。我已经尝试过各种代码排列,例如
positiveOrder.OrderID = value as thisOrder.OrderID.GetType();
或
positiveOrder.OrderID = (typeof(thisOrder.OrderID)) value;
但似乎没有任何效果。关于以编程方式指定要转换为的类型的任何想法?它可以在编译时或运行时完成,因为 Order 类不会改变。
【问题讨论】:
-
"如果明天我更改 Order 类以将其 OrderID 成员保存为 String",您为什么要这样做?以及这如何影响“价值”的类型(这也会改变)?
-
值始终作为对象发送,通过我无法控制的代码。该代码不知道我的实现细节,这就是为什么它将它发送给我的原因。我可能必须根据不断变化的业务需求更改 OrderID 的类型。现在我在模型中使用简单的增量整数,但在最终的应用程序中,我可能会使用字符串来代替,例如。我不想通过两次指定 OrderID 的类型来重复自己,这样如果我必须更改它就不必更改它两次。这更像是一个很好的设计问题而不是功能问题。
标签: c# dynamic casting compile-time