要设置或修改对象属性,我们只需要在对象上调用下面的方法:
关于设置或修改对象属性的若干注意:
对于C++版,SetValue/SetValues/SetArray方法实际上都是有多个重载版本的,每个版本对应一种数据类型,使用时应正确书写对应数据类型,以免造成错误的调用;
对于C++版,每个SetValue/SetValues/SetArray都包含2个附加参数,即doUpdate和doNotify,它们分别表示: 当对象因这些方法的调用而被修改时,是否需要及时更新对象图形以及是否需要通知那些与当前对象建立有依赖关系的对象(也就是触发那些对象上的OnReferenceChanged通知)。默认情况下这两个附加参数的值都是true,在特定情况下我们可能需要精细控制它们以便达到特定的目的;
对于C#版,SetValue通用于单值变量和多值变量(数组)的参数设置。由于多态类型识别的影响,需要在设置单值变量时,从字面类型上精确表达所设置值的类型,比如: double值应表达为0而不能是2,因为2会被识别为int;long类型数应表达为3L而不能是3,因为3会被识别成int类型;其次,在使用SetValue设置多值变量时,应使用C#中派生于System.Collections.Generic.IEnumerable<type>接口的容器对象来传递值,在C#中,绝大多数容器对象都派生于这个接口,所以用起来还是很方便的;
对于C#版,GetValue通用于获取单值变量数组变量的值。对于单值变量的值,应在返回值不为null的情况下直接转换为预期的类型即可;而对于数组变量的值,需要在其返回值不为null的情况下转换为预期的数组类型,例如: var retVals = (double[])obj;
所有用于设置和获取属性变量值的上述方法,都需要输入一个名为accessString的字符串值用以指示所需要访问属性的名称。实际上,这个accessString不仅可以用于指示单值变量和数组变量的名称,还能以类C表达式的方式来指示数组变量中特定索引处的元素以及结构体变量中的特定成员,例如:
accessString = “MyVar”; // 用于指示单值变量、数组变量整体
accessString = “MyVar[2]”; // 用于指示数组变量中的2#元素
accessString = “Height”; // 用于指示单值结构体变量中的Height成员变量
accessString = “MyVar[2].Height”; // 用于指示数组结构体变量中2#元素中的Height成员变量
accessString = “MyVar[2].Height[4]”; // 用于指示数组结构体变量中2#元素的数组变量Height中的4号元素
accessString = “Height.XYValue[1]”; // 具体含义请读者推测