gpt4 book ai didi

c# - 如何从对象引用执行转换

转载 作者:行者123 更新时间:2023-11-30 12:16:21 25 4
gpt4 key购买 nike

class Mock
{
public static explicit operator String(Mock s)
{
return "ok";
}
}

static T GetValue<T>(object o)
{
return (T)o;
}

Mock m = new Mock();
var v1 = (string) m;
var v2 = GetValue<string>(m); // InvalidCastException is thrown.
// How to modify GetValue method
// internally, without changing its
// signature, for this casting to work ?

问候

最佳答案

两种选择:

  • 使用反射找到转换并调用它
  • 如果您使用的是 C# 4,请使用动态类型

使用反射可能会很痛苦。如果你能摆脱它,动态方法会更简单:

public static T GetValue<T>(dynamic d)
{
return (T) d;
}

这并不是对签名的特别大的改变,但如果你想保持它完全相同,你可以使用:

public static T GetValue<T>(object o)
{
dynamic d = o;
return (T) d;
}

关于c# - 如何从对象引用执行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515619/

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