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.

Dynamix.Object

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:

  1. C#
  1. namespace MySite
  2. {
  3. [Serializable]
  4. public class NewsItem : Dynamix.Object
  5. {
  6. protected NewsItem( ObjectID id ) : base( id ) { }
  7. protected NewsItem( SerializationInfo info, StreamingContext context ) :
  8. base( info, context ) {}
  9. public NewsItem() : base()
  10. {
  11. // ...
  12. }
  13. }
  14. }

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:

  1. C#
  1. namespace MySite
  2. {
  3. [Serializable]
  4. public class NewsItem : Dynamix.Object
  5. {
  6. protected NewsItem( ObjectID id ) : base( id ) { }
  7. protected NewsItem( SerializationInfo info, StreamingContext context ) :
  8. base( info, context ) {}
  9. public NewsItem() : base() {}
  10. public static readonly DateTimeProperty p_Date = new DateTimeProperty( "Date" );
  11. public static readonly TextProperty p_Headline = new TextProperty( "Headline" );
  12. public static readonly TextProperty p_Text = new TextProperty( "Text" );
  13. }
  14. }

Objektet kan nu lagra datum, rubrik och text. För att nå dessa utifrån behöver vi exponera dem som properties:

  1. C#
  1. namespace MySite
  2. {
  3. [Serializable]
  4. public class NewsItem : Dynamix.Object
  5. {
  6. ...
  7. public string Headline
  8. {
  9. get { return GetObjectPropertyValue( p_Headline ); }
  10. set { SetObjectPropertyValue( p_Headline, value ); }
  11. }
  12. public string Text
  13. {
  14. get { return GetObjectPropertyValue( p_Text ); }
  15. set { SetObjectPropertyValue( p_Text, value ); }
  16. }
  17. public DateTime Date
  18. {
  19. get { return GetObjectPropertyValue( p_Date ); }
  20. set { SetObjectPropertyValue( p_Date, value ); }
  21. }
  22. }
  23. }

Läs mer