Parent class with construct based on SysExtensionAppClassFactory
/// <summary>
/// Parent class
/// </summary>
abstract class ParentClass
{
public static ParentClass construct(TableId _tableRefId)
{
SysTableNameFactoryAttribute attribute = new SysTableNameFactoryAttribute(tableId2Name(_tableRefId));
ParentClass instance = SysExtensionAppClassFactory::getClassFromSysAttribute(classStr(ParentClass), attribute) as ParentClass;
if (!instance)
{
throw error(strFmt("@SYS23455", funcName()));
}
return instance;
}
public void process()
{
//Some code
}
}
Implementation of the Child 1 using SysTableNameFactory Attribute/// <summary>
/// Child class 1
/// </summary>
[SysTableNameFactory(tableStr(TableName1))]
class ChildClass1 extends ParentClass
{
public void process()
{
info('Child 1');
}
}Implementation of the Child 2 using SysTableNameFactory Attribute/// <summary>
/// Child class 2
/// </summary>
[SysTableNameFactory(tableStr(TableName2))]
class ChildClass2 extends ParentClass
{
public void process()
{
info('Child 2');
}
}
Example of useinternal final class RunnableClass1
{
public static void main(Args _args)
{
ParentClass::construct(tableNum(TableName1)).process();
ParentClass::construct(tableNum(TableName2)).process();
}
}