У меня есть асинхронная библиотека, которая скомпилирована в .NET 3.5, поскольку она используется приложениями .NET 3.5, но я хочу иметь возможность иметь дело с .NET 4.0 CancellationTokens, если кто-то хочет передать ее. .NET 4.0 вещи, я должен сломать совместимость с .NET 3.5. Единственный вариант, который я до сих пор придумал, - это разрешить передачу «объекта» и затем использовать отражение, но это создает уродливый общедоступный интерфейс ... Я хочу убедиться, что клиентский код передается в правильном тип объекта во время компиляции, а не во время выполнения.
Есть ли способ связываться с объектами .NET 4.0 во время компиляции, не создавая ненужную зависимость от пользовательских приложений? Сказать «использовать эту функцию, если она есть, и пропустить, если ее нет»?