这是我想做的一个具体例子。
考虑string.Join
函数。在 .NET 4.0 之前,只有两个重载,都需要一个string[]
参数。
从 .NET 4.0 开始,有新的重载采用更灵活的参数类型,包括IEnumerable<string>
.
我有一个库,其中包含一个Join
基本上完成 .NET 4.0string.Join
功能的功能。我只是想知道我是否可以使这个函数的实现依赖于目标.NET 框架。如果是 4.0,它可以简单地在string.Join
内部调用。如果 3.5 或更早版本,它可以调用自己的内部实现。
- 这个想法有意义吗?
- 如果它确实有意义,那么最合乎逻辑的方法是什么?我想我只是假设预处理器指令最有意义,因为在针对 .NET 版本早于 4.0 时
string.Join
,使用IEnumerable<string>
参数调用甚至不会编译;所以我使用的任何方法都必须在编译之前进行。(例如,在运行时检查Environment.Version
属性是行不通的。)