I have an abstract class Section
that will be used to represent a section of a document that can be either valid or invalid. Such sections can also have embedded sections. A section cannot be valid if it contains an invalid inner section.
I created classes ASection1
and ASection2
for the purpose of use them as inner sections of MySection
, to which the validation process is invoked by means of performValidation()
.
How do I get the properties of types derived from class MySection. I need help on the abstract class reflection logic as commented below.
abstract class Section {
constructor(public name: string) {
}
performValidation(): boolean {
let result: boolean = true;
//HELP IS NEEDED HERE!!!
//get all properties of this instance
//whose type inherit from "Section"
//and execute Validate() on each of them
//one at a time, if any of them returns
//false, return false.
return this.Validate();
}
abstract Validate(): boolean;
}
class ASection1 extends Section {
constructor() {
super("Section example 1");
}
Validate(): boolean {
//validation logic goes here
}
}
class ASection2 extends Section {
constructor() {
super("Section example 2");
}
Validate(): boolean {
//validation logic goes here
}
}
class MySection extends Section {
constructor() {
super("My Section");
}
subsection1: ASection1;
subsection2: ASection2;
prop1: number;
Validate(): boolean {
return this.prop1 > 100;
}
}
//run
let mySect = new MySection();
mySect.prop1 = 101;
mySect.subsection1 = new ASection1();
mySect.subsection2 = new ASection2();
mySect.performValidation();
Thanks.
Aucun commentaire:
Enregistrer un commentaire