我有一个在.NET 3.5下编译的异步库,因为它已被.NET 3.5应用程序使用,但我希望能够处理.NET 4.0 CancellationTokens,如果有人想传入一个。为了包括.NET 4.0的东西,我必须打破与.NET 3.5的兼容性。我到目前为止唯一的选择是允许传入“对象”然后使用反射,但这会产生一个丑陋的公共接口...我想确保客户端代码传递正确编译时的对象类型,而不是运行时。
有没有办法在编译时绑定.NET 4.0对象,而不会对消费者应用程序引入不必要的依赖?要说“如果它存在则使用此功能,如果不是,则跳过它”?
答案 0 :(得分:1)
您可以在单独的程序集中使用需要.NET 4.0类型的公共接口,可能作为扩展方法 - 如果需要(例如,在.NET 4类型和主程序集中类型的内部之间进行交互)您可以在主(.NET 3.5)程序集中定义一个接口,并使用.NET 4类型的包装器在.NET 4程序集中实现它,以避免完全反射。