gpt4 book ai didi

c# - 如何转换为未知类型,需要转换为GenericType,但T未知

转载 作者:行者123 更新时间:2023-12-02 16:06:03 25 4
gpt4 key购买 nike

我需要从一个我不知道类型的对象调用 DeepClone() 方法。

object x = GetObject();
var x2 = x as IDeepCloneable< ?????? >;//What can I do here???
var clone = x2.DeepClone();

public interface IDeepCloneable<T>
{
T DeepClone();
}
<小时/>

我尝试创建一个新的“基本”接口(interface)并将“:IDeepCloneable”添加到通用类中。

public interface IDeepCloneable
{
object DeepClone();
}

但在这种情况下,我需要更改从 T DeepClone() 派生的接口(interface)的方法;到 new T DeepClone();。因此,所有已经实现 IDeepCloneable< T> 的类都将无法编译。

最佳答案

您想要一个协变接口(interface):

public interface IDeepCloneable<out T>
{
T DeepClone();
}

然后您可以转换到 IDeepCloneable<object> .

关于c# - 如何转换为未知类型,需要转换为GenericType,但T未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189008/

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