gpt4 book ai didi

c# - 无效的转换异常泛型

转载 作者:可可西里 更新时间:2023-11-01 08:09:41 24 4
gpt4 key购买 nike

我遇到了这个问题,我正在使用反射从类中提取属性,但问题是反射将它们作为对象返回,而我无法将其放入我的实际类型中。

举个例子,如果这是类:

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

我错过了什么?

最佳答案

使用 dynamic而不是 object强制执行运行时真实类型检查:

var c = (dynamic)a;
var d = (Row<object>)c; // Works fine

它将调用您的 Row<T> -> Row<object>类型转换运算符。

关于c# - 无效的转换异常泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18505716/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com