I couldn't come up with better title. I will try to explain what the problem is.
Currently I am trying to build dynamically created report structure. I define needed report in config file. When user wants to a report I simply parse from config and create. The struggle I have is about how I can implement a general structure but covers extra fields provided by interfaces.
In the image you can see the class diagram. What I want is I want to use ReportStore
for storing all shared and extensive reports and providing when needed. However In ReportStore
when user call GetReportByName(reportName)
I need to return a ReportObject
. This object may be SharedReport
or ExtensiveReport
.
- To use
ISharedReport
for return value will cause losing extra field in objects based onIExtensiveReport
. - If i want to return
IExtensiveReport
it will violate. - If I want to return plain object and cast in
ReportComposer
according to value type will be complex and not developer friendly.
I am open for suggestion. Thank you in advance