一、背景
我们考虑兼容,其实是在做这样一件事:以应用级别源代码能够复用为目标,适应多个版本Revit提供的API的变化。
我们要适应多个Revit的API谈不上向前兼容向后兼容的概念。我们只是在以复用为前提,去做多个版本库Dll的适配。
在以往Revit插件适应新的Revit宿主版本的时候,我们的工作就是找到那些语义和功能一致,但是签名发生变化的那些函数,然后去适配这些函数,重新定义一个满足现有输入输出要求的新函数。常用做法就是做一个专门提供适配的项目,在这个项目中去兼容各个版本的差异,通过条件编译来控制具体的执行逻辑。更具体的实现就是定义一个静态类,把冲突方法规整成新的静态方法,然后在插件开发中,统一使用这个适配项目提供的封装过的方法。我们可以把这个模块理解成适配器,或者外观模式,或者代理,它仅仅是实现了隐式的调用子系统方案。
例如如下实现:
public static class RevitAdapterAPI
{
/// <summary>
/// 获取填充区域类型的颜色,19中分为了前景颜色和背景颜色
/// </summary>
/// <param name="frType"></param>
/// <returns></returns>
public static void SetFilledRegionTypeColor(FilledRegionType frType, Color clr)
{
#if R16 || R18
frType.Color = clr;
#else

本文探讨了在Revit插件开发中如何处理API版本兼容性问题,尤其是针对2022版本引入的重大改动。传统的适配方法包括创建静态适配类和使用条件编译,但2022版的更新影响了基础类型,增加了兼容难度和代码修改量。作者强调了此次升级的谨慎性和必要性,并预告将分享如何实现版本升级的详细策略。
最低0.47元/天 解锁文章
1422

被折叠的 条评论
为什么被折叠?



