【发布时间】:2019-12-17 07:49:21
【问题描述】:
是否可以创建通用委托列表,例如System.Converter<TInput, TOutput>?
在 java 中可能是 List<Converter<?,?>>,但使用 Java 的类型擦除不是很有用。似乎在 C# 中应该可以在从列表中检索后查询泛型类型并使用获得的实例来执行所需的转换。
详细说明问题:
我有用户提供的用户提供格式的数据,我在编译时对此一无所知。当然,我的程序中的算法知道如何使用它自己的特定数据类型。目标是拥有一个等效于 Java 的 List<Converter<?,?>>,其中可以安装转换器(由我或用户)并由程序自动查询以查看用户的数据是否可以转换为算法所需的格式。
【问题讨论】:
-
您能详细说明您正在尝试做什么/您已经尝试做什么并提出一个问题吗?
-
是的,我对这里的问题也有点模糊。
-
@MindSwipe 就像第一句话说的那样,我正在尝试创建一个
List<Converter<?,?>>(或者,最好是Dictionary<TIn, Converter<TIn, ?>>),我可以查询是否存在将用户数据类型转换为其他类型的转换器数据类型。 -
你可以,使用
List<Delegate>,但它不是很有用,因为你“丢失”了类型信息,除非你能重新构造它。如果您将它们存储在以类型参数为键的字典中,那么您可以使用带有这些类型参数的泛型方法,查找委托,强制转换并使用它。 -
所以,如果我理解正确的话,您需要一个转换器列表,您可以通过查询来查看实现了哪些类型的转换器?