- 
                Notifications
    You must be signed in to change notification settings 
- Fork 15
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.
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.
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.
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.
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.
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.
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.
If you encounter any problems following this migration, please reach out with discussion or issues as appropriate 😄
- 
Introduction to the BHoM: 
 What is the BHoM for?
 Structure of the BHoM
 Technical Philosophy of the BHoM
- 
Getting Started: 
 Installing the BHoM
 Using the BHoM
 Submitting an Issue
 Getting started for developers
- 
Use GitHub & Visual Studio: 
 Using the SCRUM Board
 Resolving an Issue
 Avoiding Conflicts
 Creating a new Repository
 Using Visual Studio
 Using Visual Studio Code
- 
Contribute: 
 The oM
 The Engine
 The Adapter
 The Toolkit
 The UI
 The Tests
- 
Guidelines: 
 Unit convention
 Geometry
 BHoM_Engine Classes
 The IImmutable Interface
 Handling Exceptional Events
 BHoM Structural Conventions
 BHoM View Quality Conventions
 Code Versioning
 Wiki Style
 Coding Style
 Null Handling
 Code Attributes
 Creating Icons
 Changelog
 Releases and Versioning
 Open Sourcing Procedure
 Dataset guidelines
- 
Foundational Interfaces: 
 IElement Required Extension Methods
- 
Continuous Integration: 
 Introduction
 Check-PR-Builds
 Check-Core
 Check-Installer
- 
Code Compliance: 
 Compliance
- 
Further Reading: 
 FAQ
 Structural Adapters
 Mongo_Toolkit
 Socket_Toolkit