setProperty method

dynamic setProperty(
  1. dynamic instance,
  2. dynamic value
)

写入属性

Implementation

dynamic setProperty(dynamic instance, dynamic value) {
  if (instance == this || instance == _vmclass) {
    //写入静态属性
    if (isExternal) {
      final valueNative = VmObject.readValue(value);
      if (externalStaticPropertyWriter != null) return externalStaticPropertyWriter!(valueNative);
      throw ('Not found externalStaticPropertyWriter: ${_vmclass.identifier}.$identifier');
    } else {
      return (internalStaticPropertyOperator as VmValue).setValue(value);
    }
  } else {
    //写入实例属性
    if (isExternal) {
      final instanceNative = VmObject.readValue(instance);
      final valueNative = VmObject.readValue(value);
      if (externalInstancePropertyWriter != null) return externalInstancePropertyWriter!(instanceNative, valueNative);
      throw ('Not found externalInstancePropertyWriter: ${_vmclass.identifier}.$identifier');
    } else {
      return (VmObject.readLogic(instance) as VmValue).getProperty(identifier).setValue(value);
    }
  }
}