AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher
Thema durchsuchen
Ansicht
Themen-Optionen

DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

Ein Thema von Stevie · begonnen am 18. Nov 2011 · letzter Beitrag vom 6. Feb 2015
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 5. Dez 2011, 14:17
Und was soll der DI Container dann zurückliefern, wenn ein Resolve<IViewModel> aufgerufen wird, welches von 2 komplett unterschiedlichen ViewModel Klassen implementiert wurde, weil man kein eigenes Interface (leer oder nicht) deklariert hat?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#2

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 5. Dez 2011, 16:44


Ich sollte Montags einfach nichts posten


Naja, also streng genommen könnte man über alle Implementierungen des Interfaces iterieren und über die Namens-Konventionen gehen.

Disclaimer: Es ist immernoch Montag.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 5. Dez 2011, 17:18
Möglich wäre das, aber das würde einen größeren Eingriff in die Funktionsweise des DI Containers erfordern. Und das nur, um sich nen 3-Zeiler zu sparen für den Fall, dass man ebend in dem Interface für das ViewModel keine Methoden und/oder Eigenschaften hat, halte ich für keinen guten Weg.

Ich denke, deine Frage zielte auf etwas anderes:
Es spricht nichts dagegen, komplett auf das Interface zu verzichten in diesem simplen Fall. Im Calculator Beispiel würde das dann bedeuten, du schreibst einfach Application.Start<TCalculatorViewModel>; Die Registrierung der Klasse passiert in diesem Fall durch das [InheritedExport] auf TViewModelBase.

Wenn du dir das ContactManager Sample anschaust, wirst du aber sehen, warum das Interface in weniger trivialen Anwendungen fast unverzichtbar ist. Dort hast du nämlich die Kontaktübersicht, welche als Abhängigkeit die Kontaktdetails hat (weil es sie ja aufrufen muss). Wäre dort kein Interface für die Details vorhanden, hättest du eine Abhängigkeit dieser 2 Models. Mit dem Interface kannst du einfach das DetailViewModel ausmocken und die Übersicht testen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 5. Dez 2011 um 17:20 Uhr)
  Mit Zitat antworten Zitat
BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#4

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 30. Mai 2012, 12:17
Habe gerade festgestellt, dass die DSharp-Multicast Events nun auch anonyme Methoden unterstützen.


  Mit Zitat antworten Zitat
BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#5

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 13. Jun 2012, 09:48
Hallo Stevie!

Ich bekomme folgenden Fehler, wenn ich ein Multicast Event in einem Multicast Event auslöse. Dieser Fehler tritt nur bei anonymen Methoden und nicht bei Methodenzeigern auf.

Exception: First chance exception at $746C23CC. Exception class $C0000092 with message 'floating point stack check at 0x746c23cc'. Process Project1.exe (2052)

Delphi-Quellcode:
  {$M+}
  TEventTest = reference to procedure;
  {$M-}

  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private

    _EventTest1 : Event<TEventTest>;
    _EventTest2 : Event<TEventTest>;

    procedure ProcessEventTest1;
    procedure ProcessEventTest2;

    function GeteventTest1: Event<TEventTest>;
    function GeteventTest2: Event<TEventTest>;

    property EventTest1: Event<TEventtest> read GetEventTest1;
    property EventTest2: Event<TEventtest> read GetEventTest2;

  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

  Self.EventTest1.Add(Self.ProcessEventTest1);
  Self.EventTest2.Add(Self.ProcessEventTest2);

  _EventTest1.Invoke();

end;

procedure TForm1.ProcessEventTest1;
begin

  _EventTest2.Invoke(); <- hier

end;

procedure TForm1.ProcessEventTest2;
begin
//
end;

function TForm1.GetEventTest1: Event<TEventTest>;
begin

  Result := _EventTest1.EventHandler;

end;

function TForm1.GetEventTest2: Event<TEventTest>;
begin

  Result := _EventTest2.EventHandler;

end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 13. Jun 2012, 20:47
Fix commited - ich hätte auf Arnaud hören sollen.

Ein Hinweis noch: Du solltest event properties immer als IEvent<T> definieren.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
BlackSeven

Registriert seit: 25. Sep 2004
79 Beiträge
 
Delphi XE7 Professional
 
#7

AW: DSharp - Data bindings, MVVM und mehr für Delphi 2010 und höher

  Alt 14. Jun 2012, 08:09
Zitat:
Ein Hinweis noch: Du solltest event properties immer als IEvent<T> definieren.
OK. Danke.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz