English
Instant Developer Foundation Documentazione
  • Note di rilascio
  • Versione 22.0.8500
  • Novità

DO: Proprietà private o di tipo oggetto e reflection

copia link

Descrizione

E' ora possibile enumerare anche le proprietà private e/o di tipo oggetto dei documenti. Per farlo è sufficiente utilizzare i nuovi metodi GetOtherPropertyCount e GetOtherPropertyDefinition che permettono di elencare le proprietà private e/o le proprietà di tipo oggetto.

N.B.: Per mantenere la compatibilità con le versioni precedenti di Instant Developer il comportamento delle funzioni GetPropertyCount, GetPropertyDefinition, GetProperty e SetProperty non è cambiato. Sono stati invece creati nuovi metodi che permettono di gestire solo le proprietà private e/o di tipo oggetto: GetOtherPropertyCount, GetOtherPropertyDefinition, GetPrivateProperty, GetObjectProperty, SetPrivateProperty e SetObjectProperty.

Per leggere e scrivere le proprietà private e/o di tipo oggetto occorre utilizzare i metodi GetPrivateProperty, GetObjectProperty, SetPrivateProperty e SetObjectProperty. Tali funzioni accettano come parametro l'indice della proprietà che si può ottenere utilizzando i metodi GetOtherPropertyCount e GetOtherPropertyDefinition.

Il miglioramento riguarda anche i metodi CopyFrom e Duplicate dei documenti. In versione 22.0 sono stati aggiunti due nuovi parametri opzionali (con valore di default uguale a FALSE per mantenere la compatibilità con le versioni precedenti) che permettono di indicare al sistema se occorre copiare anche le proprietà private e/o quelle di tipo oggetto.

Sono anche state aggiunte due nuove proprietà alla libreria IDPropertyDefinition: Private (valorizzata a TRUE se la proprietà è privata) e Description (che contiene la descrizione di design-time della proprietà). La proprietà Description può essere utilizzata anche come "tag-di-design-time" poiché è possibile leggerne il valore in funzioni generiche che utilizzano la reflection per condizionare il codice.

Funzionalità interessate

L'enumerazione delle proprietà private e/o di tipo oggetto nei documenti e relativa copia nei metodi CopyFrom o Duplicate.

Esempio di codice

// *******************************
// Clone a document (single level)
// *******************************

private IDDocument NPQ04556.GenericDocCopy(
  IDDocument Src // 
)
{
  IDDocument dst = IDDocument.getFromDNA(Src.typeName(), ...)
  // 
  // First: copy "public" properties

  IDDocumentStructure idds = Src.getStructure()
  for (int i = 1; i <= idds.getPropertyCount(); i = i + 1)
    dst.setProperty(i, Src.getProperty(i))
  // 
  // Next: copy private and object properties

  for (int i1 = 1; i1 <= idds.getOtherPropertyCount(); i1 = i1 + 1)
  {
    IDPropertyDefinition idpd = idds.getOtherPropertyDefinition(i1)
    if (idpd.dataType == Object)
      dst.setObjectProperty(i1, Src.getObjectProperty(i1))
    else if (idpd.private)
      dst.setPrivateProperty(i1, Src.getPrivateProperty(i1))
  }
  // 
  // Document is not changed

  dst.setOriginal()
  // 
  return dst
}

Note

  • Miglioramento relativo ai seguenti thread del forum:
    • Thread 1
    • Thread 2
    • Thread 3
    • Thread 4
    • Thread 5
    • Thread 6
    e relativo alla richiesta di assistenza 000150-2020.

Ultima modifica: 28/04/2022 / Validità: da 22.0.8500

Vedi anche

  • Get Other Property Count (funzione)
  • Get Other Property Definition (funzione)
  • Copy From (procedura)
  • Duplicate (funzione)
  • Get Property Count (funzione)
  • Get Property Definition (funzione)
  • Get Property (funzione)
  • Set Property (procedura)
  • ID Property Definition
  • Private (proprietà)
  • Description (proprietà)
  • Get Private Property (funzione)
  • Get Object Property (funzione)
  • Set Private Property (procedura)
  • Set Object Property (procedura)

Hai trovato utile l'articolo?

Grazie per il feedback!

Ti serve altro aiuto?

Consulta il Forum