У меня есть некоторые действия в представлении.
public class AView
{
public Action Show { get; set; }
public Action Hide { get; set; }
}
, и я пытаюсь установить эти действия внутри другого класса, передавая их в качестве параметра (я не хочу передавать весь класс)
_reloader.SetupActions(Show, Hide);
Reloader
является абстрактным, потому что могут быть разные способы обработки поведения Hide / Show в зависимости от сценария, в котором мы находимся.
public abstract class Reloader : IReloader
{
public void SetupActions(Action show, Action hide)
{
show = Show;
hide = Hide;
}
protected virtual void Show() { ... } //what should be done when Show is invoked
protected virtual void Hide() { ... } //same for Hiding
}
И длятекущее представление, я мог бы использовать RapidReloader
, SafeReloader
и т. д. Этот бит не имеет значения, за исключением того, что внедренный перегрузчик специфичен для текущего представления.
Теперь моя проблема проста и логична:когда я нахожусь в SetupActions
, все параметры равны нулю (потому что Действия не были установлены), и установка Show
в null
, очевидно, не работает.
Что я могу сделать, чтобы, когда Show.Invoke () происходил с моим представлением, вызывался ShowCode из соответствующего перегрузчика?Я хотел бы избежать передачи всего представления в качестве параметра.
Кроме того, если у вас есть лучший дизайн, я все уши.Мы можем быть в XY проблеме ситуации