Microsoft
Software
Hardware
Network
Question : C# design question
Hi,
I have an application I have designed using the MVP pattern.
I have an application presenter which is fed into higher level presenters that are used for each view. There are some methods in the application presenter that I want to be able to expose to the views without exposing all of the application presenter. These methods also need to be called directly on the application presenter instance.
The way I have done this is to create an interface with the methods I want to expose. This interface is inherited and implemented by the application presenter.
I then created an abstract class whose constructor requires an instance of the interface. This abstract class is then inherited by each of the top-level presenters which in turn exposes them to the views.
Here is the code:
public interface ISwitchView
{
void SwitchToChartView(bool displayInModalDialogBox);
void SwitchToSaveModelResultsVi
ew(bool displayInModalDialogBox);
void SwitchToLoginView();
void SwitchToResultsView();
void SwitchToSaveLoadNetworkVie
w();
void SwitchToLaneClosureView();
void SwitchToLaneClosureView(La
neClosure lc);
void SwitchToTrafficVolumeView(
);
void SwitchToTrafficVolumeView(
VehicleInp
ut vi);
void CloseDialog();
void RenderNetwork();
}
public abstract class SwitchView
{
private readonly ISwitchView _controller;
public SwitchView(ISwitchView appPresenter)
{
_controller = appPresenter;
}
public ISwitchView View
{
get { return _controller; }
}
then, in the top level presenters I inherit SwitchView as follows
public class ResultsPresenter : SwitchView
{
private readonly ApplicationPresenter _controller;
public Presenter(ApplicationPrese
nter controller) : base(controller)
{
_controller = controller
}
Does all of this seem reasonable or is there a better way of doing it?
Thank you.
Answer : C# design question
OK, then, given what you've told me, I see nothing wrong with your approach, and I think you've made appropriate choices for your design. Do you have any other questions?
Random Solutions
OWA Exchange 2003 Not Working
After update subform, then update the main form field
Unable to browse network
Some Excel 2007 worksheets open with blue screen (previous thread no help)
In Access 2007,
Connect to remote MSDE with Enterprise Manager?
outlook 2003 archiving and roaming users exchange 2003
Unable to copy detached files - even with "full control" permissions on remote server
Windows 2008 R2 cluster on HP MSA 1000
How to compact the SYSTEM hive of the registry?