不知道这个问题到底是关于什么的。
这是问题所在。假设,我正在开发一个框架,该框架将被打包到一个没有可用源代码的程序集中并作为产品交付。从一开始,框架的开发就考虑到了可扩展性,我的意思是一些目标域细节/数据/类将由引用框架的最终用户/程序集定义。启用它的一种方法是在框架中使用泛型,以便稍后定义所有内容。但是,一旦将泛型引入单个类,所有依赖/引用类和方法都必须使用所有确切的约束重新声明它。传递一个泛型并不是什么大问题,但是当你必须处理时,事情很快就会失控,比如处理其中的 8 个,这一点也不罕见。在框架中的每个小类中,您必须放置几行刚刚重新声明的类型参数,这些参数在所有类中都是相同的。似乎一个快速而肮脏的解决方案只是拥有某种类似 c++ 的宏,它将向所有(大多数)类添加相同的通用声明。但是 C# 没有宏,所以你必须手动完成。这是我们提出一个问题的地方:将这些参数从括号中取出并在程序集(项目)级别声明一次需要什么?这样您就不必编写“公共类实体* 但是 C# 没有宏,所以你必须手动完成。这是我们提出一个问题的地方:将这些参数从括号中取出并在程序集(项目)级别声明一次需要什么?这样您就不必编写“公共类实体* 但是 C# 没有宏,所以你必须手动完成。这是我们提出一个问题的地方:将这些参数从括号中取出并在程序集(项目)级别声明一次需要什么?这样您就不必编写“公共类实体*< TField> * { ... }",因为 TField 已定义,并且无论何时看到它,这意味着该类使用与程序集级别的声明相同的声明隐式知道它。通过链接此类通用程序集,开发人员必须在它们能够使用之前提供所有类型参数,或者如果某些参数仍然未绑定,则重新声明它们以供以后使用。
问题:
- 你有没有遇到过这样的情况?
- 您认为拥有此功能可能会有所帮助吗?
- 如果是这样,您目前如何在没有人的情况下相处?
- 对于那些从事 c# 工作的人:你们有什么机会将它添加到一些新版本的 c# 中?
谢谢!
更新:
我不想过多介绍细节,但按照你的意愿做了。很难做出一个很好的说明性例子,所以让我分享一下现有的情况。我正在研究一个文本处理框架,其中我有一个核心库来标记文本并具有所有可能的模式来匹配它。它不知道如何处理名词和动词等词性。幸运的是,还有另一个组件可以做到这一点。现在的目标是使用来自另一个库的词性知识来扩展核心库中的模式。我这样做的方法是向名为“CustomPattern”的核心库添加了一个特殊模式,该模式由任意类参数化,可以用任何东西替换。在我们的例子中,它是 PartOfSpeach 枚举。看看https://gist.github 上的代码段落。.
这里的问题是,如何避免在核心库中使用 TDetails 泛型,但又能够使用附加任意数据的自定义模式?
这里唯一的要求是我们必须保持代码的严格类型,就像现在一样。