Я сталкивался с этой проблемой раньше. К сожалению, поскольку C # не поддерживает множественное наследование, ваши BaseForm
и BaseUserControl
не могут наследовать от BaseFunctions
, Form
и UserControl
(соответственно).
Обходной путь, который я использую, заключается в создании интерфейса IBaseFunctions
с необходимыми методами и размещении функциональности в классе помощника.
У вас все еще много копировальной пасты, но, по крайней мере, это просто упаковка, а не нужная логика.
например:
public interface IBaseFunctions
{
IUser GetCurrentUser();
void ShowMessage(String message);
}
public class BaseFunctionsHelper : IBaseFunctions
{
public IUser GetCurrentUser()
{
// Get Current User
}
public void ShowMessage(String message)
{
// Show message
}
}
public class BaseForm : Form, IBaseFunctions
{
private readonly IBaseFunctions _helper = new BaseFunctionsHelper();
public IUser GetCurrentUser()
{
return _helper.GetCurrentUser();
}
public void ShowMessage(String message)
{
return _helper.ShowMessage(message);
}
}
public class BaseControl : UserControl, IBaseFunctions
{
private readonly IBaseFunctions _helper = new BaseFunctionsHelper();
public IUser GetCurrentUser()
{
return _helper.GetCurrentUser();
}
public void ShowMessage(String message)
{
return _helper.ShowMessage(message);
}
}