【发布时间】:2012-01-10 21:34:57
【问题描述】:
我有一个在 .NET 3.5 下编译的异步库,因为它被 .NET 3.5 应用程序使用,但如果有人想传入一个,我希望能够处理 .NET 4.0 CancellationTokens。为了包括.NET 4.0 的东西,我必须打破与 .NET 3.5 的兼容性。到目前为止我提出的唯一选择是只允许传入“对象”然后使用反射,但这会导致丑陋的公共接口......我想确保客户端代码传入正确编译时的对象类型,而不是运行时。
有没有什么方法可以在编译时绑定 .NET 4.0 对象,而不会对消费者应用程序引入不必要的依赖?要说“如果有就使用这个功能,如果没有就跳过它”?
【问题讨论】:
-
没有。由于您希望这些类型成为公共接口的一部分,因此您必须编译两个不同的版本。
-
我可以建议您的库的 4.0 版本和 3.5 版本可能更实用。
-
您可以使用类似 #if !NET_3_5 的指令,使用语句 #endif 来帮助减少代码量。不确定这是否是一个好习惯。
标签: .net types .net-3.5 cancellation