Kod och objektmodelleringsförändringar mellan Dynamix 4 och Dynamix 5
Nedan beskrivs förändringar som kan påverka webbplatsimplementationer. Ofta räcker det att kompilera om projektet, men i vissa fall behöver koden förändras. Ett förslag på åtgärd listas med varje punkt nedan.
Objekt och objektlistor
Samtliga fält som för egenskapslagring har bytt namn från p_* till *Property, exempelvis skulle en egenskap som tidigare hette p_Name nu heta NameProperty
Åtgärd: Använd det nya egenskapsnamnet. Om referensen till egenskapen användes för att hitta en Comparer för sortering - överväg att använda OrderBy med get/set-metoden för egenskapen istället.
ObjectList.Add, ObjectList.Remove m fl – Ändrad parametertyp
Info: Varianterna med otypade parametrar kan inte längre användas.
Åtgärd: Använd typade parametrar. I vissa fall kan koden tidigare ha försökt lägga till andra typer som råkade vara Dynamix-objekt, t ex verktyg som gör list.Add( selectedItem ). Använd i dessa fall istället SelectedObject.
ObjectList.Add – ändrat returvärde/typ.
Info: Metoden returnerar inte längre positionen där objektet lagts till utan void.
Åtgärd Använd t ex IndexOf för att leta upp objektets position efter att det har lagts till.
ObjectList.BinarySearch( object value, IComparer comparer ) – metoden är borttagen
Åtgärd: Använd en annan sökmetod.
ObjectReference.GetReferences( IObject obj ) - returnvärdestyp ändrad
Info: Returvärdets typ har ändrats från ObjectReference[] till IEnumerable<ObjectReference>
Åtgärd: Ändra typ på variabler som lagrar resultatet.
ObjectReference.GetReferences( ICollection objects ) – returnvärdestyp och parametertyp ändrade
Info: Returnvärdets typ är nu IEnumerable<ObjectReference>, parameterns typ är nu ICollection<IObject>.
Åtgärd: Ändra typ på variabler som lagrar resultatet och på inparametrar.
Object.EnsureProperty, Object.LoadProperty – metoderna är borttagna
Åtgärd: Modellera om koden
Object.DB_ChangeUID – metoden är borttagen
Åtgärd: Modellera om koden
Object.CheckedOutBy, Object.CheckedOutDateTime, Object.IsCheckedOutByCurrentUser, Object.IsCheckedOut, Object.Checkout(), Object.Checkin() – egenskaper och metoder är flyttade
Åtgärd: Metoderna och egenskaperna ovan finns nu endast på VersionManager. Kontrollera att koden körs på objekt av rätt typ och använd eventuellt casts till VersionManager
Object.SetReferencedCascadedObjects och Object.MarkCascadedObjectsForDeletion – metoderna är borttagna
Åtgärd: Använd Object.UpdateCascadedReferences.
ObjectSaveContext.MarkNonReferencedObjectsForDeletion och ObjectSaveContext. MarkNonReferencedObjectForDeletion – metoderna är borttagna
Åtgärd: Använd Object.UpdateCascadedReferences respektive Object.UpdateCascadedReference.
Dynamix.Collections.ObjectTransformationCollection – ändrad implementation
Info: Klassen implementerar nu IEnumerable<Dynamix.Collections.ObjectTransformation> istället för att ärva från System.Collections.CollectionBase.
Åtgärd: Normalt ingen.
TreeObject.GetAllowedChildTypes() ändrat basreturvärde
Info: Basimplementationen returnerar nu en tom typlista istället för en lista som innehåller TreeObject och alla dess undertyper.
Åtgärd: Normalt krävs ingen åtgärd. Om man har lagt alla regler om tillåtna undertyper direkt i användargränssnittet behöver man implementera GetAllowedChildTypes för sina subklasser och där returnera åtminstone de typer som användargränssnittet tillåter, annars kommer t ex trädbaserade verktyg att misslyckas med att lägga till nya underobjekt.
För nya objekt och för vidareutveckling av gamla rekommenderas att använda GetAllowedChildTypeInformation och att modellera verktyg med t ex TreeAndGridManageObjectsDialogCustomizers.
ObjectID används inte längre för att peka på objekttyper.Istället använd ObjectTypeID
Åtgärd: Använd denna typ istället.
Object. GetApplicablePrivileges() – ändrad returvärdestyp
Info: Metoden returnerar nu IEnumerable<Privilege> istället för ObjectList
Åtgärd: Ändra typ på variabler som lagrar returvärdet.
Object.UserHasImplicitPrivilege – egenskapen är borttagen
Åtgärd: Modellera om koden
Filer och mappar
DiskObject. GetReferencesIncludingChildren() – returntyp ändrad
Info: Returtypens värde har ändrats från ObjectReference[] till IEnumerable<ObjectReference>
Åtgärd: Ändra typ på eventuella överlagringar och variable som lagrar resultat.
DirectoryRoot, Directory och DiskObject - Konstruktor ändrad
Info: Parametern treeRoot har ändrat typ från TreeRoot till DiskObjectTreeRoot
Åtgärd: Normalt ingen
DirectoryRoot – klassen är nu abstrakt
Info: Klassen har delats upp i subklasserna PublicDirectoryRoot, PrivateDirectoryRoot och FileServerDirectoryRoot
Åtgärd: Använd de nya klasserna
DirectoryRoot.IsPublic – egenskapen är borttagen
Åtgärd: Använd subklasserna enligt ovan
DirectoryRoot.IsFileServer – egenskapen är borttagen
Åtgärd: Använd subklasserna enligt ovan
Användare, grupper och autentisering
User.Clipboard - egenskapen är borttagen
Åtgärd: Modellera om koden
Dynamix.Security.Authentication.Login( User user, bool createPersistentCookie, string userData ) – metoden är borttagen
Info: userData är inte längre skrivbar och kan därför inte sättas vid login
Åtgärd: Lagra eventuell egen infomation i t ex cookies eller session.
PasswordProperty – ändrad modellering
Info: Egenskapen innehåller nu en instans av Dynamix.Password istället för en sträng
Åtgärd: Ändra typ på eventuella variabler och anrop
Subject.DisplayName – egenskapen är borttagen/flyttad
Info: Egenskapen är nu uppdelad i Group.DisplayName och User.DisplayName. Den senare är inte skrivbar.
Åtgärd: Normalt ingen. Koden kan behöva modelleras om ifall User.DisplayName har satts av kod.
Mallar, sidor och innehåll
Template.Url är obsolete, Template.GetUrl() måste implementeras
Åtgärd: Implementera GetUrl() – normalt returneras det som Url brukade returnerar, i ett Dynamix.Url-objekt
Template.Name och Template.Description används inte längre
Åtgärd: Implementera IName_Name respektiver IDescription_Description istället. Implentera också attributet Ui5.NameAttribute via developer tools eller explicit för att ge mallen ett namn i installationsdialoger.
NavigationItem.DB_Rename – metoden är borttagen
Åtgärd: Använd GetEditableCopy() – sätt Name - DB_Save()
Javascript:dxOnLoad – metoden är borttagen
Åtgärd: Ta bort eventuella anrop till dxOnLoad i mallar
Dynamix. FlowLayoutTemplateComponent – klassen är ersatt
Info: Flödesinnehåll modelleras nu av Dynamix.Content5. FlowLayoutTemplateComponent
Åtgärd: Använd den nya typen
ContentTemplate.AddFlowLayoutContentComponent(…) – metoden är ersatt
Info: Alla komponenter läggs nu till via [Template]Components.Add( … )
Åtgärd: Använd Components.Add( new Dynamix.Content5.FlowLayoutTemplateComponent(…) )
TemplateComponent – konstruktor ändrad
Info: Parametern page finns inte längre i någon konstruktor
Åtgärd: Använd konstruktorn med endast ”name” istället.
ContentTypeGroup.DB_AddContentType(Dynamix.ContentType) – metoden är ersatt
Info: Dynamix.ContentType är ersatt av Dynamix.Content5.ContentType.
Åtgärd: Använd DB_AddContentType(Dynamix.Content5.ContentType) istället.
Länkar
Dynamix.Links.Target.ModifyHref( string href ) – metoden borttagen
Åtgärd: Använd Dynamix.Links.Target.GetHref( string href, Link link )
Dynamix.Links.Target.TargetAttr – egenskapen är borttagen
Åtgärd: Använd Dynamix.Links.Target.GetTargetAttr( Link )
Användargränssnitt
Dynamix.Content.Form.EditableOptionsGrid – klassen är borttagen
Åtgärd: Använd en annan redigeringskontroll
Dynamix.UI.Controls.NavigationNameChooser - klassen är borttagen
Åtgärd: Använd en annan redigeringskontroll
PageComponent – menyn är borttagen
Info: Det finns inte längre någon meny för sidkomponenters egenskaper. De kan istället lägga till sig i huvudverktygsfältet
Åtgärd: Överlagra CreateToolbarItems(). Anropa CreateStandardToolbarEditButton() eller skapa knappar enligt egen logik.
Util.SITE_FRAME_PATH har bytt namn till Util.SiteFramePath
Åtgärd: Använd det nya namnet
Util.RegisterNavigateJS – metoden har flyttats
Åtgärd: Använd Dynamix.Ui5.Interface.Interface.RegisterLoad
Diverse
Dynamix.Color – klassen är borttagen
Åtgärd: Lagra färger på annat sätt, t ex med ColorProperty
Clipboard och ContentClipboard – klasserna är borttagna
Åtgärd: Modellera om koden
Site.WaiSettings har flyttat till GlobalSettings.WaiSettings
Åtgärd: Modellera om koden
ExceptionLog – klassen har flyttats
Åtgärd: Använd ExceptionLogItem istället