Can I expose a class from another .net namespace as a class in my namespace? I use a class – antlr.collections.AST – as the return type for a function belonging to a class in my namespace; as a result, the user has to have
using antlr.collections; using myNamespace;
at the top of their files in order to use my function. Can I make myNamespace.AST an alias for antlr.collections.AST, such that the user only has to have
using myNamespace;
at the top of their files?
Bear in mind that the consumers of your code won’t actually need to have using statements. Those are there to make their lives easier, so they don’t have to type antlr.collections.Foo and antlr.collections.Bar all over their source.
The bigger ‘impact’ (if indeed there really is a severe one) is that the consumer of your code will need a hard reference to the assembly where antlr.collections is defined.
However, if that’s documented up front, I honestly don’t see it being that big of a problem. It’s no different than the consumer of a SubSonic-generated DAL needing references both to the generated DAL assembly and the original SubSonic assembly. (And, quite possibly, using statements as well.)
Dependencies are what they are. There’s a reason classes are broken into namespaces — primarily for organization and to reduce naming conflicts. Not knowing what classes are in the namespace you mention, I don’t know how likely such a conflict actually is in your scenario … But attempting to move the class from one namespace to another, or to hide the fact that such is needed by deriving a blank class from it, is probably not the best idea. It won’t kill the consumers of your class to have another reference and using statement.