我正在遇到一个问题,我正在使用反射从类中获取属性,但问题是反射将它们返回为对象,我无法将其转换为实际类型。
例如,如果这是该类:
将一个类型为
但是当我尝试从
我错过了什么?
例如,如果这是该类:
public class Row<T>
{
public static explicit operator Row<object>(Row<T> o)
{
return new Row<object>
{
Name = o.Name,
Value = o.Value
};
}
public string Name { get; set; }
public T Value { get; set; }
}
将一个类型为
Row<bool>
的对象转换为 Row<object>
是可行的: var a = new Row<bool>
{
Name = "Foo",
Value = true
};
var b = (Row<object>)a; // Works
但是当我尝试从
object
转换到 Row<object>
时,它似乎忽略了我的显式运算符并抛出了一个 System.InvalidCastException 异常。var c = (object) a; // Simulate getting from reflection
var d = (Row<object>) c; // System.InvalidCastException
我错过了什么?
explicit operator Row<object>(object o)
。 - Alexei LevenkovRow<T>
,而你却给了它一个object
。 - Adam Houldsworthexplicit operator Row<object>(object o)
,他会如何定义它? - JLRisheobject
定义一个显式转换。 - Adam Houldsworth