Laden...

Display Attribute

Erstellt von cprogrammer vor 11 Monaten Letzter Beitrag vor 11 Monaten 562 Views
C
cprogrammer Themenstarter:in
73 Beiträge seit 2023
vor 11 Monaten
Display Attribute

Hallo, ich schreibe gerade an einer dll für eine 3rd party Anwendung, welche diese dll aufruft (source code der 3rtd party app nicht vorhanden).

Aus der dll heraus ist es offensichtlich möglich, mittels DisplayAttribut das UI der 3rd party Anwendung zu erweitern bzw. zu befüllen.

Codebeispiel und UI-Ausschnitt ist beigefügt.

Nu frage ich mich einerweits wie das eigentlich funktioniert und was der Code, den ich angehängt habe eigentlich macht bzw. wie dieser überhaupt in der Lage ist das UI anzusprechen. Könnte das mal jemand erklären.

Da das UI wahrscheinlich komplexer wird ist auch die Frage aufgetaucht, ob man in dem UI z.B. auch Tabs einbauen kann oder dieses auf mehrere Seiten aufweiten kann. Andererseits stellt sich auch die Frage, ob man aus der dll heraus vielleicht eigene Forms aufrufen könnte, die eine komplexere Konfiguration ermöglichen.

Wäre dankbar für ein paar Hinweise, denn die Dokumentation hierzu ist im Prinzip nicht vorhanden.

4.939 Beiträge seit 2008
vor 11 Monaten

Hallo,

das Stichwort dazu lautet: Reflection in .NET

Bei dem Source-Code selbst ist nur wichtig, daß es sich um eine Eigenschaft handelt, so daß der Name sowie dessen Wert angezeigt bzw. geändert werden kann.

Das sieht mir aber eher nach WPF (bzw. MVVM) aus, als nach Windows-Forms.

Und um welche Anwendung handelt es sich denn?

C
cprogrammer Themenstarter:in
73 Beiträge seit 2023
vor 11 Monaten

Also ich habe jetzt folgendes verstanden.

Bei [Display(GroupName = "xxx", Name = "xxx")] handelt es sich um ein sog. Attribut, das von sich aus erstmal gar nichts macht.

Bei public DatenTyp CandleNumber
{

get ⇒ _selection;

set
{
_selection = value;

}

}
handelt es sich um eine  methode zum befüllen/lesen der Klassenvariable _selection.

Das Attribut bewirkt nun, dass zur Laufzeit die 3rd party app die methode als solche erkennt und in ihr GUI so einbaut, dass die Klassenvariable _selection von dort aus gesetzt werden kann. Der DatenTyp der methode bestimmt dabei, wie das grafisch dort aussicht, z.B. Comobox bei enums.

Ist das so richtig ?

Wäre es prinzipiell möglich in der eigenen DLL ein kleines GUI zu entwerfen und dafür zu sorgen, dass dieses aus der 3rd party app heraus

aufrufbar ist, um die eingenen settings von diesem eigenen GUI aus vorzunehmen ? Bin dankbar für Tipps wie hier ggf. vorzugehen wäre.

2.079 Beiträge seit 2012
vor 11 Monaten

Attribute sind Metadaten.
Sie stehen einfach nur in der Assembly und sonst nichts.
Spannend ist, dass man sie und die Daten mit Reflection auslesen kann.
Du kannst Teile in deinem Code damit markieren, viele Programme und auch .NET selber nutzen sie, um das dann zu finden und ggf. Einstellungen auszulesen.

handelt es sich um eine  methode zum befüllen/lesen der Klassenvariable _selection

Das ist eine Property mit get- und set-Accessor. Im Hintergrund sind das dann zwei Methoden.
Aber Properties sind nicht einfach "nur" Methoden, die werden auch technisch unterschieden.

Wäre es prinzipiell möglich in der eigenen DLL ein kleines GUI zu entwerfen und dafür zu sorgen, dass dieses aus der 3rd party app heraus aufrufbar ist?

Wenn die Anwendung einen vorgesehenen Weg dafür bietet, dann kannst Du den nutzen.
Ohne offiziellen Weg wird's schwieriger, möglich sicher, aber dann eher Hacken und sicher keine gute und langfristige Lösung.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.