gpt4 book ai didi

c# - 在 C# 中将泛型作为泛型类型参数传递

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

我在 C# 中做了一些关于泛型的实验,我遇到了一个问题,我想将泛型类型作为类型参数传递,并带有约束以实现一个我不知道其类型的泛型接口(interface)。

这是我的例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication3
{
class Program
{
interface IGenericCollection<T>
{
IEnumerable<T> Items { get; set; }
}

abstract class GenericCollection<T> : IGenericCollection<T>
{
public IEnumerable<T> Items { get; set; }
}

//This class holds a generic collection but i have to ensure this class
//implements my IGenericCollection interface. The problem here is that
//i dont know which type TGenericCollection is using and so i am unable to
//pass this information to the constraint.

class CollectionOwner<TGenericCollection>
where TGenericCollection : IGenericCollection< dont know ... >
{
protected TGenericCollection theCollection = default(TGenericCollection);
}

static void Main(string[] args)
{
}
}
}

我在这里读了几篇文章,都告诉我这是不可能的,因为 C# 和 CLR 的限制。但这样做的正确方法是什么?

最佳答案

我认为这里没有问题,只需将另一个通用参数添加到您的所有者类中即可:

 class CollectionOwner<T,TGenericCollection>
where TGenericCollection : IGenericCollection<T>
{
protected TGenericCollection theCollection = default(TGenericCollection);
}

关于c# - 在 C# 中将泛型作为泛型类型参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301197/

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