![]() |
Syntaxprobleme mit einer Methode
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will die Methode AddAlias aufrufen aus einer .NET Assembly. Im Anhang sieht man ein Screeshot aus Lutz Röders Refelctor wie das ganze aussieht.
Ich versuche die Methode wie folgt aufzurufen:
Code:
Allerdings unterstreicht mit VS die beiden öffnenden Klammern mit der Fehlermeldung:
Db4o.configure.AddAlias(new Alias.TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o"));
Zitat:
In der Hilfe zu der Assembly steht folgendes Code-Beispiel:
Code:
Allerdings scheint das Java Code zu sein, da dieser unter Java genau so funktioniert.
Db4o.configure().addAlias(new TypeAlias("com.f1.Pilot", "com.f1.Driver"));
|
Re: Syntaxprobleme mit einer Methode
Hi,
ich glaube der versucht hier das new immer auf die erste "Variable" zu beziehen und wird hier Alias. als Datentyp verwenden wollen. Versuch es mal mit der (ungewohnt ausseshenden) Konstruktion
Code:
Unter Java ist zumindest ein ähnliches Konstrukt vorhanden.
Db4o.configure.AddAlias(Alias.new TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o"));
Gruß Der Unwissende |
Re: Syntaxprobleme mit einer Methode
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die Hilfe aber das hilft leider auch nicht. Der Einfachheit halber ein Screenshot mit den Fehlern.
|
Re: Syntaxprobleme mit einer Methode
Ist Db4o.configure eine Methode oder eine Property? Wenns eine Methode ist, dann musst du Db4o.configure().addAlias machen..
|
Re: Syntaxprobleme mit einer Methode
Hallo,
ist die Klasse, die Du über Db4o.configure benutzt, von ResXResourceWriter abgeleitet? Dann verstehe ich die NET-SDK-Hilfe so:
Code:
Db4o.configure.AddAlias("com.f1.Pilot", "com.f1.Driver");
Zitat:
|
Re: Syntaxprobleme mit einer Methode
Habe ich auch schon probiert, das macht es nur noch schlimmer. In Java ist es wohl eine Methode.
Wenn ich mir den Reflektor richtig angucke, müsse es eiegntlich so heißen:
Code:
Aber dann bekomme ich bei den öffnenden Klammern auch ein:
Db4o.Configuration.AddAlias(new Alias.TypeAlias("Demo_db4o.Person", "Demo_db4o.Person, Demo_db4o"));
Zitat:
Code:
führt zu der Fehlermeldung
Db4o.configure.AddAlias("com.f1.Pilot", "com.f1.Driver");
Zitat:
|
Re: Syntaxprobleme mit einer Methode
Ich kann im Reflector nirgendwo ein "Alias.TypeAlias" finden, habe ich etwas auf dem Screenshot übersehen?
Code:
Falls phXqls Vermutung zutrifft, eben noch mit dem Klammerpaar, sieht auf dem zweiten Anhang aber eher nicht so aus.
Db4o.configure.AddAlias(new TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o"));
|
Re: Syntaxprobleme mit einer Methode
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hänge die Assembly mal an. Die db40 ist Freeware.
|
Re: Syntaxprobleme mit einer Methode
Code:
Sollte so funktionieren. Aber kein "using com.db4o.config" vergessen oder in "new com.db4o.config.TypeAlias" ändern. Hast du den Rootnamespace com.db4o schon eingebunden, reicht auch "config.TypeAlias"
Db4o.Configure().AddAlias(new TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o"));
|
Re: Syntaxprobleme mit einer Methode
Liste der Anhänge anzeigen (Anzahl: 1)
das funktioniert irgendwie alles nicht. Siehe Screenshot.
|
Re: Syntaxprobleme mit einer Methode
Also das von Khabarakh funktioniert bei mir... Vieleicht liegts daran, wo du das ganze aufrufts? :gruebel:
|
Re: Syntaxprobleme mit einer Methode
Achso, jetzt ist die Erleuchtung gekommen ;) . Zwar lässt sich zum Initialisieren von Feldern Code wie "(static) double foo = Math.Sqrt(3);" direkt in den Klassenrumpf packen, alles andere muss aber schön in Methoden verpackt sein, so unübersichtlich ist C# nun auch wieder nicht :zwinker: . D.h., alle anderen Initialisierungen schiebst du in einen Konstruktor der Klasse (dort landen die Feldinitialisierungen letzten Endes ebenfalls), hier wohl am Ehesten der statische.
Code:
static Form1()
{ Db4o.Configure().AddAlias(new TypeAlias("Demo_db4o.Person","Demo_db4o.Person, Demo_db4o")); } |
Re: Syntaxprobleme mit einer Methode
Hallo Luckie,
ich habe mir die DLL mal mit Roeder's Reflector genauer angesehen. Dabei stelle ich fest: Zitat:
Code:
Zu dieser Klasse gibt es folgende Methode:
... Db4o.Configure() ...
Code:
Die Deklaration der Alias-Klasse und auch von TypeAlias habe ich (noch) nicht gefunden. Es spricht aber alles dafür, dass das richtige Verfahren so lautet:
public void AddAlias(Alias alias);
Code:
Vielleicht teilst Du das Verfahren auf, um im Debugger Details zu sehen:
Db4o.Configure().AddAlias(new Alias(...));
Code:
Viel Erfolg! Jürgen
Config4Impl cfg;
cfg = Db4o.Configure(); Alias xxx = new TypeAlias(...); cfg.AddAlias(xxx); PS. Den Hinweis von Khabarakh verstehe ich nicht, oder ich würde es anders empfehlen. Eigene Initialisierungen - also auch die Config-Maßnahmen - können in den Konstruktor gelegt werden, aber nach InitializeComponents(). |
Re: Syntaxprobleme mit einer Methode
Zitat:
com.db4o.Db4o Erweitern -> Configure(), Klick auf Parameter -> com.db4o.config.Configuration, Erweitern -> AddAlias, Klick auf Parameter -> com.db4o.config.Alias, Erweitern -> Derived Types -> com.db4o.config.TypeAlias Zitat:
Fassen wir einmal zusammen: a) Wir rufen die Methode einer statischen Klasse auf. b) Wir übergeben nur konstante Parameter. c) Aus a) und b) folgt, dass die Instanz der Form für den Aufruf unwichtig ist. d) Aus a) und b) können wir außerdem zusammen mit der etwaigen Kenntnis des Sinnes der Methode folgern, dass wir die Methode zu einer beliebigen Zeit in beliebigem Kontext aufrufen können. e) Aus dem Sinn ergibt sich außerdem zusammen mit b), dass wir die Methode genau einmal im gesamten Verlauf der aktuellen AppDomain aufrufen sollten. f) Und da der Aufruf wohl nicht zum Spaß allein existiert, sollten wir ihn vor der Methode von Form1 durchführen, die den Alias benötigt. Wie aber in d) gesagt ist die genaue Zeit, wann nun "davor" ist, irrelevant. Daraus, besonders e), folgt für mich, dass das Ganze nur in einem statischen Konstruktor oder einem Singleton stattfinden kann. Und laut f) sollte es uns auch nicht stören, wenn dieser schon ein paar Schritte vor dem Instanzen-Konstruktor aufgerufen, was bei einem Singleton mit lazy Initialization nicht der Fall wäre. |
Re: Syntaxprobleme mit einer Methode
Zitat:
![]() Das war's. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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-2025 by Thomas Breitkreuz