title: Recommended way of replacing an application's repository assembly
body: <p>I have an application that contains a repository assembly.  When the application is initially installed, the repository is very simple: a local JSON file store.  But I want to give my end-users the ability to use a different repository store (SQL, Oracle, etc).  </p>
  
  <p>Would it be as simple as replacing the original repository DLL in the application's directory with the new repository DLL? If so, would the user simply copy and paste the new repository DLL into the application's directory, overwriting the original DLL? Is there a better way of doing this?</p>
  
  <p>Note that I also have another assembly in the application which contains all of the interfaces used by the application (is this a good practice?).  The application would verify that the repository assembly implements all of the required interfaces.  </p>
  
  <p>I believe that I do not want a plug-in architecture/framework.  I don't want the ability to choose one from a set of loaded repository assemblies.  But I'll listen to any argument favoring a plug-in strategy for my application.</p>