AdvantageCMS.Core.Common.BaseClasses Namespace
Build With Advantage

BusinessObject<(Of <(<'T>)>)> Class

Generic base class for all ACSP business objects. Provides serialization, cloning, and property-name helper methods. Implements the BusinessObjectBase

Namespace:  AdvantageCMS.Core.Admin.BaseClasses
Assembly:  AdvantageCMS.Core (in AdvantageCMS.Core.dll)

Syntax


[SerializableAttribute]
public abstract class BusinessObject<T> : BusinessObjectBase
where T : BusinessObject<T>

Type Parameters

T
The concrete business object type that derives from this class (CRTP pattern).

Examples


The following example shows how to create a concrete business object by inheriting from BusinessObject<(Of <(<'T>)>)> and overriding the three required abstract methods:
C#
[Serializable]
public class AgentConfig : BusinessObject<AgentConfig>
{
    public string Name { get; set; }
    public string SystemPrompt { get; set; }
    public bool IsEnabled { get; set; }

    protected override void SetSearchableProperties()
    {
        AddSearchableProperty("Name", Name);
        AddSearchableProperty("IsEnabled", IsEnabled);
    }

    protected override void SetSummaryDataRow()
    {
        AddSummaryDataRow("Name", Name ?? "N/A");
        AddSummaryDataRow("Enabled", IsEnabled);
    }

    protected override bool Validate(eCMSActions action, ActionArgs e,
        out eCMSEngineEventStatus status, out string message)
    {
        status = eCMSEngineEventStatus.Success;
        message = string.Empty;
        if (string.IsNullOrWhiteSpace(Name))
        {
            message = "Name is required.";
            status = eCMSEngineEventStatus.Failed;
            return false;
        }
        return true;
    }
}

Inheritance Hierarchy


Object
  AdvantageCMS.Core.Admin.BaseClasses..::..BusinessObjectBase
    AdvantageCMS.Core.Admin.BaseClasses..::..BusinessObject<(Of <(<'T>)>)>