First things to know: there is no barriers between assemblies (unless you artificially create barriers changing assembly permissions). Whatever you can do in one assembly, you can do in reference assembly. You only need to use
public
or
protected
(within the same class hierarchy) access modifiers while withing a single assembly you need only
internal
or
internal protected
access.
(If you really need to load assemblies dynamically instead of referencing them (I refer to the answer by Abhinav, as your request is not clear at all, you need to develop some plug-in technique. For this purpose, I have comprehensive directions given in my past answers:
Create WPF Application that uses Reloadable Plugins...[
^].
AppDomain refuses to load an assembly[
^].
Don't think it's too complex. Most likely, you don't need the hard part of it related to the unloadable stuff and hence Application Domains.)
—SA