﻿//----------------------
// <auto-generated>
// </auto-generated>
//----------------------







export class ParentDto implements IParentDto {
    child!: ChildDto;

    [key: string]: any;

    constructor(data?: IParentDto) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
        if (!data) {
            this.child = new ChildDto();
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.child = _data["child"] ? ChildDto.fromJS(_data["child"]) : new ChildDto();
        }
    }

    static fromJS(data: any): ParentDto {
        data = typeof data === 'object' ? data : {};
        let result = new ParentDto();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["child"] = this.child ? this.child.toJSON() : undefined as any;
        return data;
    }
}

export interface IParentDto {
    child: ChildDto;

    [key: string]: any;
}

export class ChildDto implements IChildDto {
    property!: string;

    [key: string]: any;

    constructor(data?: IChildDto) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.property = _data["property"];
        }
    }

    static fromJS(data: any): ChildDto {
        data = typeof data === 'object' ? data : {};
        let result = new ChildDto();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["property"] = this.property;
        return data;
    }
}

export interface IChildDto {
    property: string;

    [key: string]: any;
}

export class MyClass implements IMyClass {
    parent!: ParentDto;

    [key: string]: any;

    constructor(data?: IMyClass) {
        if (data) {
            for (var property in data) {
                if (data.hasOwnProperty(property))
                    (this as any)[property] = (data as any)[property];
            }
        }
    }

    init(_data?: any) {
        if (_data) {
            for (var property in _data) {
                if (_data.hasOwnProperty(property))
                    this[property] = _data[property];
            }
            this.parent = _data["parent"] ? ParentDto.fromJS(_data["parent"]) : undefined as any;
        }
    }

    static fromJS(data: any): MyClass {
        data = typeof data === 'object' ? data : {};
        let result = new MyClass();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        for (var property in this) {
            if (this.hasOwnProperty(property))
                data[property] = this[property];
        }
        data["parent"] = this.parent ? this.parent.toJSON() : undefined as any;
        return data;
    }
}

export interface IMyClass {
    parent: ParentDto;

    [key: string]: any;
}