
适用版本:NX7.5以下
由于历史版本功能不完善的问题,NX7.5及以下的UIBlock控件尚未进行分类,所有的控件在代码中都是UIBlock对象(除Tree以外),并且所有对控件的操作都需要先执行GetProperties(),再根据要修改的属性类型和名称来写后续的函数。(如SetLogical(“Show”,false);)这种写法非常繁琐,而且容易出错,本篇介绍如何在用扩展写法,在低版本中实现和高版本一样的函数。
详细说明
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。以设置控件的显示为例。高版本中的写法:block.Show();
新建一个静态类,名称任意,写静态函数如下:

图1 Show( )的简单写法
测试如下:

图2 扩展写法测试
可以看到如上图所示,UIBlock类型的selection可以直接使用Show( )函数,VS的代码提示当中也标注的“(扩展)”。
当然这样的写法会过于简单,由于UIBlock是一个基础类,很多不同类型的控件都使用这个类,每个控件之间可以使用的属性也是不一样的,所以稳健的写法如下:

图3 稳健写法
如上图所示,预先判断是否包含指定的属性名称,再进行设置。
总 结
类的扩展写法是C#非常实用的特性之一。不仅仅是UIBlock,很多低版本不具备的函数都可以使用这种方式。比如低版本中的NXObject对象没有HasUserAttribute的判断函数,也可用扩展添加。这种写法减少了一次参数传入和创建新的类,加入到公共库之后,能够加快开发的速度和便利性。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!