gpt4 book ai didi

c# - 有没有办法在 C# 中以通用方式表达通用处理程序?

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

假设我有一个指定一些集合处理程序的接口(interface):

interface ICollectionHandler<T> where T : new() { ... }

然后我有同样的其他类需要一个集合处理程序,它将用于各种类型,所以我想做类似的事情:

class SomeClass<T> where T : ICollectionHandler<> ...

但是,如果我这样做,我会收到一条错误消息,提示“类型参数丢失”。

那么有没有一种方法可以指定 T 是一个泛型类型,它自己的类型参数可以在运行时指定,或者我是否将 C# 推到了它的(可能是合理的)边界之外?

最佳答案

你可以尝试这样的事情:

interface ICollectionHandler<T> where T : new() { }

public class MyImplementation<T, U> where T : ICollectionHandler<U> { }

我敢肯定,了解在您的接口(interface)实现中驻留的泛型类型是必需的。如果您不关心该子类型:

interface ICollectionHandler { }

public abstract class CollectionHandler<T> : ICollectionHandler where T : new() { }

public class MyImplementation<T> where T : ICollectionHandler { }

但这实际上取决于您将如何使用它以及在什么情况下使用它。也许您可以提供更多详细信息?

关于c# - 有没有办法在 C# 中以通用方式表达通用处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12922347/

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