I know the question sound somewhat stupid, but i have this scenario.
Context
I am creating 2 background tasks (METRO apps, winRT) which have much parts in common.
Now what i want is, a common base class defining common functionality, and 2 task to be derived from base class.
Problem: Background task should be targetted WinMD, and in this mode, it is not possible to create non sealed public class. If i create sealed, i cannot derive from it, and if i create private, i cannot expose the derived types because base is private.
Concern: What are the ways to achieve the desired functionality. (derived public types from private base). One way could be use of Composition (instead of inheritance)
You simply can’t. .NET doesn’t allow you to make a derived type more accessible than the base type. You’ll have to expose the base type.
Note that if you only give it internal constructors, then other code won’t be able to instantiate it or create their own derived types… what’s the problem with exposing it at that point?
EDIT: Okay, I’ve just reread the question, and seen this:
So:
(If you have any other documentation around what’s allowed in WinMD, that would be useful.)
If you’re allowed to export interfaces, perhaps you could have your base class and derived classes internal, but make them implement public interfaces. Then have public static methods in a public static class to create instances of these internal types and return them via the interface. Again, I don’t know if this is allowed – if you have any links to documentation around what’s allowed in WinMD, that would be useful for those of us who haven’t done any WinRT development.