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
Macro to export outlook contacts to Excel hangs
Web Service to upload images
Where to buy Office 2003 OEM Basic CHEAP (but leagal)?
Set break on unhandled errors in Microsoft Options window in Access 2003
There isn't enough memory to perform this operation
How to convert this VB.NET code to VC# code?
Exchange 2010 Spam Handling Hub Transport Server
Error:1321 the Installer has insufficient privleges to modfiy the file x.mdf file
Converting text to date
2008 server & 2000 Professional client