我遇到了这个问题,我正在使用反射从类中提取属性,但问题是反射将它们作为对象返回,而我无法将其转换为我的实际类型。无效的异常抛出异常
举个例子,如果是这样的类:
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
我错过了什么?
这样做var c =(Row
不确定你期望的 - 在你的示例中没有'明确的运算符行
这可能是因为显式运算符期望'行'而你给它一个'对象'。 –