1

我有一个在 .NET 3.5 下编译的异步库,因为它被 .NET 3.5 应用程序使用,但是如果有人想传入一个,我希望能够处理 .NET 4.0 CancellationTokens。为了包括 .NET 4.0东西,我必须打破与 .NET 3.5 的兼容性。到目前为止,我提出的唯一选择是只允许传入“对象”然后使用反射,但这会导致丑陋的公共接口......我想确保客户端代码传入正确编译时的对象类型,而不是运行时。

有什么方法可以在编译时绑定 .NET 4.0 对象,而不会对消费者应用程序引入不必要的依赖?说“如果有就使用这个功能,如果没有就跳过它”?

4

1 回答 1

1

您可以在单独的程序集中拥有需要 .NET 4.0 类型的公共接口,可能作为扩展方法 - 如果需要(例如,在主程序集中的 .NET 4 类型和类型的内部进行交互),您可以定义主 (.NET 3.5) 程序集中的接口,并在 .NET 4 程序集中使用 .NET 4 类型的包装器实现它,以完全避免反射。

于 2012-01-10T21:42:48.910 回答