// Property reflector

import 'package:pip_services3_commons/pip_services3_commons.dart';

void main(List<String> arguments) async {
  var myClassA = ClassA();
  var myClassB = ClassB();

  var value1 = RecursiveObjectReader.getPropertyNames(myClassA);
  print('The property names of myClassA are: $value1');

  var value2 = RecursiveObjectReader.hasProperty(myClassB, 'param5');
  print('myClassB contains param5: $value2');

  var value3 = RecursiveObjectReader.getProperties(myClassB);
  print('The properties of myClassB are: $value3');

  var value4 = RecursiveObjectReader.getProperty(myClassB, 'param4');
  print('The value of param4 is: $value4');
}

class ClassA {
  String param1 = 'hello';
  int param2 = 123;

  int methodA() {
    return 123;
  }
}

class ClassAa {
  String param5 = 'hello aa';
}

class ClassB extends ClassA {
  String param4 = 'inside 2';
}