假设在代码前面的某个地方我保存了变量的类型
Type type = typeof(Int32);
value现在,有了一个类型变量,object我需要type像这样使用我的 c 转换,
var i = (type)value;
但这不起作用。可以做什么?
UPD 以防万一,这也不起作用。
var i = (type)Convert.ChangeType(value, type);
UPD2:应 Pavel Mayorov 的要求,我将我的评论添加到问题中:
“......想法是这样的:有一个带有属性Object Value和属性的基本抽象类Type ValueType。一个继承这个抽象类的具体类,将为该属性分配所需的类型ValueType,并且该属性本身将具有Value重要的价值。此外,当使用从抽象类继承的类型集合时,可以通过从." 中Value获取类型来提取所需类型的值。ValueType
让我们做一个小测试
投射功能:
测试本身:
控制台输出
UPD
如果您手边没有 Generic 参数,但需要调用 Generic 方法,那么您可以像这样通过 dynamic 来实现:
结论:
编译器无法使用未知类型的变量。任何变量都必须具有在编译时已知的数据类型。
但是您不需要未知类型的变量:所需的变量类型取决于您打算如何使用它。它总是可以确定的。
从您的说明中可以看出,您不仅需要创建一个变量,还需要在基类中创建一个属性。这个任务比你想象的要容易:创建一个 type 的抽象属性就足够了
object。无需以某种方式另外指出该属性
UntypedValue的实际类型ValueType(除非您可以在评论中写下它)。好吧,在派生类中,我们只是重载
UntypedValue它,使这个属性按我们的需要工作: