【发布时间】:2020-10-22 14:40:11
【问题描述】:
我有一个类 Option<T> 定义如下:
class Option<T>
{
T Value { get; set; }
bool HasValue { get; }
}
在我的代码的某个时刻,这个类的一个实例通过回调作为object 发送给我(在value 内部传递)
private void Callback(object value)
{
}
我想将值转换为Option<T>,但在编译时我不知道T 的类型。
如何“向上转换”实例以便能够检查,例如,Value 属性?
【问题讨论】:
-
"我想将值强制转换为 Option
,但编译时不知道类型 T " 那么你不能强制转换,因为强制转换是编译时概念。您需要使用反射或dynamic。 -
如果您不知道类型,您想如何检查
Value属性?你能给我们一个关于你想用那个Option<T>对象做什么的sn-p,它可能不会在C# 中编译但传达你的意图? -
如果您可以更改类,请使用
object Value属性实现非泛型IOption接口。 -
如果您不知道要转换的类型,您应该如何转换...?不可能。
Option<T>只是一个类型的蓝图。在运行时T是一个实际类型。 -
那么,如何使用 Reflection 来检查 HasValue?