gpt4 book ai didi

c# - 在 C# 中转换泛型类

转载 作者:太空狗 更新时间:2023-10-29 22:03:37 26 4
gpt4 key购买 nike

我在转换泛型类型时遇到问题。

例如我有类(class):

public class Dog
{
}

public class Husky : Dog
{

}

public class MyWrapper<T> where T : class
{
}

然后我想做这样的事情,但我不知道怎么做

MyWrapper<Husky> husky = new MyWrapper<Husky>();
List<MyWrapper<Dog>> dogs= new List<MyWrapper<Dog>>();
dogs.Add(husky); // how to cast husky to MyWrapper<Dog>?

编辑:已更改 Animal<T>MyWrapper<T> , 所以这将是更充分的例子

最佳答案

您可以使用 generic covariance C# 4 或更高版本中的接口(interface)。为此,您需要定义协变接口(interface)(使用 out)并让 MyWrapper 实现该接口(interface):

public class Dog 
{
}

public class Husky : Dog
{
}

public class MyWrapper<T> : IMyWrapper<T> where T : class
{
}

public interface IMyWrapper<out T> where T : class
{
}

然后你可以这样做:

var husky = new MyWrapper<Husky>();
var dogs = new List<IMyWrapper<Dog>>();
dogs.Add(husky);

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

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