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

Dav*_*rno 3 c#

想象一下,我有一个指定一些集合处理程序的接口:

interface ICollectionHandler<T> where T : new() { ... }
Run Code Online (Sandbox Code Playgroud)

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

class SomeClass<T> where T : ICollectionHandler<> ...
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我得到一个错误,说"缺少类型参数".

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

Lig*_*ker 5

你可以尝试类似的东西:

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

public class MyImplementation<T, U> where T : ICollectionHandler<U> { }
Run Code Online (Sandbox Code Playgroud)

我非常确定需要了解哪种泛型类型存在于您的接口实现中.如果您不关心该子类型:

interface ICollectionHandler { }

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

public class MyImplementation<T> where T : ICollectionHandler { }
Run Code Online (Sandbox Code Playgroud)

但这实际上取决于你将如何使用它以及在什么情况下.也许你可以提供更多细节?