Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  C#.net Attributsargumente

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  C#.net Attributsargumente (949 mal gelesen)
fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ich baue mir in den Optionenkatalog einen zusätzlichen Einstellungs-Tab für unsere Applikation.

Dazu defniiere ich die einzelnen Optionen in einer serialisierbaren Klasse.

Code:

//----------------------------------------------------------------------------------------------------------
      static private Boolean _PlotSettings_UpdateZkopf = true;
      [Description("Diese Einstellung definiert, ob beim Öffnen der Zeichnung die Zeichnungsköpfe (Änderungsvermerke, Kundendaten etc.) aktualisiert werden soll"),
        Category("Plot Settings"),
        DisplayName( "Zeichnungsköpfe (allg. Daten) aktualisieren")
      ]
      public Boolean Update_Zkopf
      {
          set { _PlotSettings_UpdateZkopf = value; }
          get { return _PlotSettings_UpdateZkopf; }
      }


Nur wie bringe ich da eine mehrsprachige Version zusammen.
Wenn ich die Texte in den Attributen Description, Category und DisplayName aus einer Textresource hole, bekomme ich folgende Fehlermeldung:

Fehler 1 Ein Attributargument muss ein constant-, typeof- oder Arrayerstellungsausdruck sein.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 20. Mai. 2009 12:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wo bekommst Du den Fehler? Beim Project-Build oder während runtime?

Ich bekomme (mit VS2008) keinen Fehler, weder Fehlermeldung beim Erstellen noch im Lauf

- alfred -

------------------
www.hollaus.at

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Beim Projekt Built

Allerdings VS 2005. Gute Idde , jetzt starte ich mal meine laptop und probiers auf der 2008 aus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 20. Mai. 2009 12:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sollte eigentlich auch mit 2005 keinen Fehler bringen, denn ich sehe auch keinen 

Ich würde mal versuchen, Attribut für Attribut aus der Deklaration zu entfernen und dadurch dem Auslöser näherzukommen.

- alfred -

------------------
www.hollaus.at

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 13:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

wie holst Du denn den String aus der resource. Vielleicht liegt da mein Fehler ?

[Category(OptionsDlg.Texte.ResourceManager.getstring("PlotSettings")), ...

bzw. in Kurzform

[Category(OptionsDlg.Texte.PlotSettings)), ...

liefer z.B.: den Fehler

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 20. Mai. 2009 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

[Category(OptionsDlg.Texte.ResourceManager.getstring("PlotSettings")), ...

na das ist der Auslöser, der so schon leider nicht funkt, das ist eben nicht konstant und damit ist auch nichts mit direkt in Attribut-Definition hineinschreiben; entspricht aber auch nicht obigem Beispiel 

In diesem Fall bist Du gezwungen, eine Klassendefinition im Lauf zu erstellen, im Lauf zu kompilieren und dann erst zu verwenden. Ich hab mich zwar davon überzeugen lassen, dass das notwendig ist, aber nie im Detais ausgetüfftelt.

Sorry, ich nehme an, diese Antwort macht Dir keine Freude 

- alfred -

------------------
www.hollaus.at

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Öhm, bin ich jetzt gescheiter?

Wofür gibts denn diese Attribute,w enn man die nicht (so einfach) lokalisieren kann? Sind ja dann für Arsch und Friedrich.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 20. Mai. 2009 14:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
Wofür gibts denn diese Attribute,w enn man die nicht (so einfach) lokalisieren kann? Sind ja dann für Arsch und Friedrich
....na ganz so heftig würd ich's nicht ausdrücken, aber gleichzeitig muss ich Dir auch recht geben.

Lösungsansatz: entweder Du 'spielst' Dich mit ResourceManager (einigermassen auswändige Lösung für Klassendefinitionen, deren Attributswerte automatisiert vom resx-File übersetzt werden 
...oder Du hast eine begrenzte Anzahl von Sprachen (in die Du zu übersetzen hast) und eine begrenzte Anzahl von Klassen, in denen Du Attribute zu übersetzen hast, dann könntest Du folgenden Weg gehen:

a) definiere eine Basisklasse, in der Du Deine Properties definierst und auf die Du im Programm hingreifst
b) je Übersetzungssprache erzeugst Du eine von der Basisklasse abgeleitete (INHERIT) Version, in denen Du nur die Properties definierst und denen jeweils für die Sprache definierte Attributs-werte.
c) im Lauf des Programms suchst Du dann für die Anzeige im PropertyGrid die Klasse für die gewünschte Sprache aus.

Ich gebe zu, der Weg ist aus Sicht der Programmierung NICHT SCHÖN, aber unter obigen Voraussetzungen schnell geschrieben.

- alfred -

------------------
www.hollaus.at

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 20. Mai. 2009 14:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo ich denke, ich werde mich für die 2. Lösung entscheiden.

Es gibt eh nur Deutsch und Englisch, und auch nur relativ wenige Einstellungsmöglichkeiten im Propertydialog.

So viele Vorteile die .net Porgrammierung bietet, das erscheint mir etwas konfus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz