<p>You do you manage the same presenter working with different repositories using the MVP pattern? </p>

<p>I just have multiple constructor overloads and the presenter simply uses the one that is suitable for the scenario. </p>

<pre><code>AddCustomerPresenter presenter = new AddCustomerPresenter(this,customerRepository); 
presenter.AddCustomer(); 

presenter = new AddCustomerPresenter(this,archiveRepository); 
presenter.Archive(); 
</code></pre>

Why not have
```
```
IRepository { /* .. */ }
CustomerRepository : IRepository { /* .. */ }
ArchiveRepository : IRepository { /* .. */ }
```
```
and then
```
```
AddCustomerPresenter {
IRepository Store {get;set;}
public AddCustomerPresenter(IRepository store) { /*...*/ }
/*...*/
}
```
```
Your presenter should NOT have any static dependency on ANY implementation of IRepository.  If you find there's no other way, you need to rework your design because it's probably flawed.