返回C#中作为集合的泛型类型

弗兰克Q.

我定义了可以以通用方式实现的接口。返回类型必须是一个集合,其中输入参数可以是类或值。

public interface IDataRetriever<T, C> where T : ICollection<string>
{

    T GetData(C criteria);
}

当我尝试返回列表时,出现错误“类型参数T不能与as操作一起使用,因为它没有类类型”。尝试删除“ as T”,但这也不起作用。

如果我更换地方T : ICollection<string>List<string>它的工作原理。这里有什么不对的地方?

public class CustomADataRetrieverImpl<T, C>: IDataRetriever<T, C> 
             where T : ICollection<string>
{

    public T GetData(C criteria)
    {

        string myCriteria = criteria as string;
        ICollection<string> data = new List<string>()
            ...
        return data as T;
    }
}
大卫·L

as 期望T为引用(或可为空)类型,这意味着对类的约束也应包含在签名中。

public interface IDataRetriever<T, C>
    where T : ICollection<string>, class

{
    T GetData(C criteria);
}

正如Jason在评论中提到的,如果T是字符串类型或从T派生的类型以外的其他任何东西,则将返回null。但是,由于您的约束条件指定您希望ICollection<T>是字符串,因此这是可以接受的,因为您当前正在编写问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#集合类型约束泛型

来自分类Dev

如何允许C#8中的可为空的泛型类型作为方法的返回类型?

来自分类Dev

如何根据 C# 中的 T 类型将泛型类型返回为精确类型

来自分类Dev

C#中泛型类型的缺点

来自分类Dev

C#中的泛型类型

来自分类Dev

在C#中循环泛型类型

来自分类Dev

C#中的泛型类型转换

来自分类Dev

C#中的双重泛型类型

来自分类Dev

泛型类型作为函数返回类型

来自分类Dev

在 C# 中使用泛型类型作为参数

来自分类Dev

使用泛型作为返回类型

来自分类Dev

泛型作为方法返回类型

来自分类Dev

如何在C#中将受约束的泛型类型的Action委托存储在类型安全的集合中?

来自分类Dev

如何在C#中将受约束的泛型类型的Action委托存储在类型安全的集合中?

来自分类Dev

C#中的多类泛型集合

来自分类Dev

C#中的多类泛型集合

来自分类Dev

泛型类型集合

来自分类Dev

泛型作为Java中的泛型类型?

来自分类Dev

在C#中的函数中访问泛型类型的属性

来自分类Dev

数组作为 Kotlin 中的泛型类型

来自分类Dev

C#中的条件泛型类型构造函数?

来自分类Dev

在C#中访问非泛型类型

来自分类Dev

C#中的泛型和继承类型

来自分类Dev

C#中的递归泛型类型参数

来自分类Dev

在c#中遍历泛型类型列表

来自分类Dev

比较C#中2个泛型类型的对象

来自分类Dev

在C#中强制转换为任何类型的泛型

来自分类Dev

C#泛型类型中的多态性

来自分类Dev

在 C# 中安全地转换泛型类型