Похоже, вам нужно иметь несколько просмотров и докладчиков.Представления могут следовать некоторой цепочке наследования для повторного использования в представлениях.
// Base requirements for user registration.
public interface IUserRegistrationView {
string FirstName { get; }
string LastName { get; }
string EmailAddress { get; }
string Password { get; }
}
public interface ISelfRegistrationView : IUserRegistrationView {
string CreditCardNumber { get; }
CardType CreditCardType { get; }
DateTime CreditCardExpirationDate { get; }
}
Тогда вам понадобится два докладчика .Один для Admin регистраций и другой для Самостоятельных регистраций .
Пока у вас есть какая-то вспомогательная бизнес-служба для выполнения реальной работы (создания пользователей) -тогда вы можете сделать что-то вроде этого ...
public class AdminRegisterNewUserPresenter : BasePresenter
{
private readonly IUserRegistrationView view = null;
public AdminRegisterNewUserPresenter(IUserRegistrationView view) { this.view = view; }
public void RegisterNewUser()
{
try
{
UserBusinessService service = new UserBusinessService();
service.AdminRegisterNewUser(this.view.FirstName,
this.view.LastName, this.view.EmailAddress, this.view.Password);
}
catch(Exception e)
{
base.HandleError(e);
}
}
}
public class SelfRegistrationPresenter : BasePresenter
{
private readonly ISelfRegistrationView view = null;
public SelfRegistrationPresenter(ISelfRegistrationView view) { this.view = view; }
public void RegisterNewUser()
{
try
{
UserBusinessService service = new UserBusinessService();
service.NewUserSelfRegistration(this.view.FirstName,
this.view.LastName, this.view.EmailAddress, this.view.Password,
this.view.CreditCardNumber, this.view.CreditCardType, this.view.CreditCardExpirationDate);
}
catch(Exception e)
{
base.HandleError(e);
}
}
}