Forum Discussion
rhankey
3 years agoContributor III
Referencing a custom structure from a referenced assembly
I am trying to figure out how to share a structure between OS BR files.
In an Extender BR file named ExtenderBR I have:
Public Structure MyStruct
Public Element1 As String
Public Element2 ...
- 3 years ago
It's just a namespacing issue. My code above worked because the type was not declared at compilation time, so typing information would only be (successfully) looked up at runtime; but yours wants types available at compilation time, so you have to import the namespace at the top:
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
That should solve your compilation issues.
(For the record, you don't need to mark "Contains Global Functions for Formulas" to go cross-rule, that option is just if you plan to actually reference it from the Member Formula properties on dimension members, something that typically only Finance rules concern themselves with.)
JackLacava
OneStream Employee
3 years ago#WorksForMe, dude, at least between Finance rules... I'd suggest to check for typos, there were a lot of them in the code.
- rhankey3 years agoContributor III
I apologize if there were typos, or it appears I cut some corners in attempting to demonstrate the issue. Below, I will show screen shots using the same hypothetical example.
Here is a screenshot of the relevant portion of the ExtenderBR that is to contain the common Structure & Function:
And since you mentioned it might be an issue with using an Extender for the common Structure/Function, here's a screen shot of the same structure/functions replicated into a Finance Rule file too:
And here is its properties tab showing that it has been tagged with having global functions:
And now we move on to the Finance rule where I want to use the common structure and function. In this rules file, I have included calls to both the common Extender and the common Finance rule file to kill two birds with one stone. I have placed comments on lines 28:36 indicating the compiler issues I receive:
And here is the properties tab:
As I hope to have demonstrated above, there are no issues referencing the Public functions (and simple variables) defined in other BR files. I do this sort of stuff a lot with no issue. But I cannot reference custom structures defined in other BR files.
Any ideas how I can access a custom structure that I have defined in another BR file?
- JackLacava3 years ago
OneStream Employee
It's just a namespacing issue. My code above worked because the type was not declared at compilation time, so typing information would only be (successfully) looked up at runtime; but yours wants types available at compilation time, so you have to import the namespace at the top:
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
That should solve your compilation issues.
(For the record, you don't need to mark "Contains Global Functions for Formulas" to go cross-rule, that option is just if you plan to actually reference it from the Member Formula properties on dimension members, something that typically only Finance rules concern themselves with.)
- rhankey3 years agoContributor III
I can confirm either of the following did resolve the issue.
Imports OneStream.BusinessRule.Extender.ExtenderBR.MainClass
or
Imports OneStream.BusinessRule.Finance.FinanceCommonBR.MainClass
Thanks for the pointer.