Recently customers reported compile-time issues with the SmartComponent Library resulting in compilation errors in the files SmartToolbarController, SmartPanelController or SmartNavigationPanel and Forms using those classes. In one of the cases this was seen in combination with using a different R-code location during compile (separating source and R-code).
Our analysis of these issues could not show anything wrong in our code. However it seemed likely that the fact that we were using ABL and .NET Interfaces with the same name but in different packages / namespaces was part of the problem. Obviously this did confuse the ABL compiler when locating those Interfaces.
For this reason we have renamed the .NET Interfaces in the Consultingwerk.SmartComponents.Interfaces.Design namespace. The .NET Interfaces have no functionality for executing SmartComponent Library applications. However these Interfaces are required for linking objects in the PropertyGrid of the OpenEdge Architect Visual Designer. The .NET Interfaces are used for the Link... properties are just a proxy or a facade for the Smart... properties defined as the ABL Interface types.
For compatibility reasons the old Interface names are still available in the Consultingwerk.SmartComponents Assembly. The new Interfaces extend (inherit) the old interfaces so that existing code that uses the .NET Interfaces continues to execute without change. However there should not be any reason to reference the Link... properties or these .NET Interfaces in your code. The Smart... properties with similar names have the same functionality and do not need to be CASTed before accessing properties or methods of the SmartComponent Library.
We will be rolling out this change soon.
.NET Interfaces affected by this change