2022 Q1 Reflection oM Engine migration to Base oM Engine
Following the discussion in this issue and associated discussions in this issue and this issue, the Reflection oM was removed from BHoM, and significant changes made to the location of methods between Reflection_Engine and BHoM_Engine DLLs.
Reflection_oM has been removed entirely, while Reflection_Engine has been modified. Moving forward, Reflection_Engine will house methods which allow the code base to ask questions about itself, following the traditional route of Reflection in programming, so the engine will continue to exist, but core methods that are more commonly used for general operation of the eco-system have been migrated to the Base_Engine.
Pull Requests
To jump straight into the code changes, see these PRs:
- BHoM: Reflection_oM: Migrate objects to Base_oM - Removing Reflection_oM
- BHoM_Engine: Align to changes in oM - moving Reflection_oM objects to Base_oM -> updating usings and codings to the new object locations
Further changes were made to all repositories within the installer. A full list is available in the following files. These links will take you to the commit states at the time this work was done, and will highlight which repositories received the updates at the time. All repositories received the updates described in this article to ensure they could compile against the base changes, with no other changes provided during this work.
Reflection_oM -> Attributes
BH.oM.Reflection.Attributes
-> BH.oM.Base.Attributes
The biggest impact to repositories was via the migration of all Reflection_oM objects to the BHoM project, falling under the Base
namespace. This included Attributes
, Debugging
, and the interfaces for MultiOutput
objects.
The Attributes
are a key part of BHoM documentation, providing Input
, Output
, and MultiOutput
documentation attributes, as well as versioning attributes such as ToBeRemoved
and PreviousVersion
.
Prior to this work, they were housed under the namespace BH.oM.Reflection.Attributes
, but this has now become BH.oM.Base.Attributes
following the migration. Updating your using
statements and referencing BHoM.dll
rather than Reflection_oM.dll
should be sufficient to resolve compilation issues here.
Reflection_oM -> Debugging
BH.oM.Reflection.Debugging
-> BH.oM.Base.Debugging
For anyone needing to use the Debugging
objects of BHoM (such as Event
), these are now housed in the BH.oM.Base.Debugging
namespace. Existing uses of this should be sufficient to rename the using
statement and ensure a reference to BHoM.dll
rather than Reflection_oM.dll
.
Reflection_oM -> Output
BH.oM.Reflection
-> BH.oM.Base
(BH.oM.Reflection.Output<T>
-> BH.oM.Base.Output<T>
)
The Output<T>
objects were housed in the top level of the Reflection_oM in the namespace BH.oM.Reflection
. These have been moved to the top level of the BHoM in the namespace BH.oM.Base
.
Anyone using Output<T, Tn>
objects should find it sufficient to replace using BH.oM.Reflection;
with using BH.oM.Base;
and ensuring a reference to BHoM.dll
rather than Reflection_oM.dll
going forward.
Reflection_Engine -> Loading/Reflecting Assemblies
BH.Engine.Reflection
-> BH.Engine.Base
These methods were primarily used by UIs to load DLLs appropriately into their platforms. These have moved to the Base Engine, in the BHoM_Engine.dll
reference. Adding a reference to BHoM_Engine.dll
and updating using statements and method calls should be sufficient.
The use of the name Reflect
has been removed from the Base Engine to avoid confusion with the ongoing use of Reflection_Engine, and has become Extract
. See this file for more information.
Reflection_Engine -> Error/Warning/Note recording
BH.Engine.Reflection
-> BH.Engine.Base
BH.Engine.Reflection.Compute.RecordError()
-> BH.Engine.Base.Compute.RecordError()
BH.Engine.Reflection.Compute.RecordWarning()
-> BH.Engine.Base.Compute.RecordWarning()
BH.Engine.Reflection.Compute.RecordNote()
-> BH.Engine.Base.Compute.RecordNote()
Another big change with the migration is the housing of methods related to the logging system within BHoM. These have been updated as above, with the same functionality as before. If your code was using the logging system, updating Reflection
to Base
and ensuring a reference to BHoM_Engine.dll
should be sufficient.
Questions/Issues
If you encounter any problems following this migration, please reach out with discussion or issues as appropriate 😄