Modul-Views: parameterloser Ctor + Initialize() (Designer-öffenbar)

Der VS-WinForms-Designer braucht einen parameterlosen Konstruktor, um eine Form
zu instanziieren. Die drei Views hatten nur einen DI-Ctor -> Designer hätte sie
nicht öffnen können. Umgestellt auf das Core-View-Muster (DashboardView):
- Parameterloser Ctor: InitializeComponent() + Event-Wiring.
- Initialize(deps): Abhängigkeiten setzen + Daten laden.
- Felder nullable + Null-Guards in den Handlern.
- CopyTradingModule.RegisterUi: new View() + view.Initialize(...) statt DI-Ctor.

Verifiziert: Build grün, --smoke-ui grün (3 Accounts / 32 Trader, alle Views OK).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-06 10:15:04 +02:00
co-authored by Claude Opus 4.8
parent 4caba5bfd1
commit 76007db93f
4 changed files with 76 additions and 42 deletions
@@ -62,10 +62,15 @@ namespace PolyTrader.Modules.CopyTrading
Title = "Master-Trader",
Group = "CopyTrading",
Order = 100,
CreateForm = () => new MasterTradersView(
services.GetRequiredService<ITrackedTraderRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>())
CreateForm = () =>
{
var view = new MasterTradersView();
view.Initialize(
services.GetRequiredService<ITrackedTraderRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
}
});
host.RegisterView(new ModuleView
@@ -74,10 +79,15 @@ namespace PolyTrader.Modules.CopyTrading
Title = "Geschlossene Copytrades",
Group = "CopyTrading",
Order = 110,
CreateForm = () => new ClosedTradesView(
services.GetRequiredService<ICopyTradeLogRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>())
CreateForm = () =>
{
var view = new ClosedTradesView();
view.Initialize(
services.GetRequiredService<ICopyTradeLogRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
}
});
host.RegisterView(new ModuleView
@@ -86,10 +96,15 @@ namespace PolyTrader.Modules.CopyTrading
Title = "Copytrading-Account-Einstellungen",
Group = "CopyTrading",
Order = 120,
CreateForm = () => new AccountSettingsView(
services.GetRequiredService<ICopyTradingAccountSettingsRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>())
CreateForm = () =>
{
var view = new AccountSettingsView();
view.Initialize(
services.GetRequiredService<ICopyTradingAccountSettingsRepository>(),
services.GetRequiredService<TradingState>(),
services.GetRequiredService<CopyTradingState>());
return view;
}
});
}