Objekt i Dynamix CMS
Dynamix.Object är den grundläggande klassen i Dynamix-lösningar. Alla objekt som lagrar information i systemet ärver från denna. Dynamix tar i de allra flesta fall automatiskt hand om databaslagring och cachning av objekt.
Det som krävs av objektklasserna som ska användas är att:
De ärver från Dynamix.Object eller någon av dess subklasser.
De är serialiserbara.
De implementerar standard-, serialisering- och databaskonstruktorerna.
Exempel:
- C#
namespace MySite
{
[Serializable]
public class NewsItem : Dynamix.Object
{
protected NewsItem( ObjectID id ) : base( id ) { }
protected NewsItem( SerializationInfo info, StreamingContext context ) :
base( info, context ) {}
public NewsItem() : base()
{
// ...
}
}
}
Detta är den minimala objekt-implementationen. Alla konstruktorerna måste alltid implementeras. Däremot behöver de inte vara publika.
Egenskaper
För att lagra information i objekten används normalt de inbyggda egenskapstyperna. Dessa sparas och laddas automatiskt av Dynamix, ingen egenutvecklad databaskod behövs.
Låt oss bygga ut exemplet ovan med några lämpliga egenskaper:
- C#
namespace MySite
{
[Serializable]
public class NewsItem : Dynamix.Object
{
protected NewsItem( ObjectID id ) : base( id ) { }
protected NewsItem( SerializationInfo info, StreamingContext context ) :
base( info, context ) {}
public NewsItem() : base() {}
public static readonly DateTimeProperty p_Date = new DateTimeProperty( "Date" );
public static readonly TextProperty p_Headline = new TextProperty( "Headline" );
public static readonly TextProperty p_Text = new TextProperty( "Text" );
}
}
Objektet kan nu lagra datum, rubrik och text. För att nå dessa utifrån behöver vi exponera dem som properties:
- C#
namespace MySite
{
[Serializable]
public class NewsItem : Dynamix.Object
{
...
public string Headline
{
get { return GetObjectPropertyValue( p_Headline ); }
set { SetObjectPropertyValue( p_Headline, value ); }
}
public string Text
{
get { return GetObjectPropertyValue( p_Text ); }
set { SetObjectPropertyValue( p_Text, value ); }
}
public DateTime Date
{
get { return GetObjectPropertyValue( p_Date ); }
set { SetObjectPropertyValue( p_Date, value ); }
}
}
}
Läs mer