Entwickler-Ecke

Basistechnologien - Unbekanntes Sprachelement


r0xta - Di 04.05.10 13:46
Titel: Unbekanntes Sprachelement
Hallo zusammen,

bin kürzlich in C# auf folgende Elemente gestoßen und wusste nicht wie ich dieses lesen kann / was diese bewirken.


C#-Quelltext
1:
2:
3:
4:
    static someMethodName()
    {
      _properties["#highlightedbutton"] = string.Empty;
      ...


sowie




C#-Quelltext
1:
2:
3:
public class someClassName{
    [TableColumn("idRecording", NotNull = true), PrimaryKey(AutoGenerated = true)] private int idRecording;
    ...


Kann mir jemand kurz erklären was das jeweils ist / wie ich sowas lesen muss?

Danke schon mal!


danielf - Di 04.05.10 14:13

Hallo,


C#-Quelltext
1:
_properties["#highlightedbutton"] = string.Empty;                    

Den Zugriff mit eckigen Klammern nennt man Index. Dieser kann von einem beliebigen Datentyp sein. In diesem Fall handelt es sich um einen String. Die genaue Datenstruktur hast du nicht mitgeliefert, so dass ich nur raten kann um welche es sind handelt. Ich vermute ein Dictionary<string,string>.

Dabei handelt es sich um ein Key-Value-Container. Der ein Objekt mit einem Schlüssel in dieser Struktur ablegt. Sowohl Schlüssel als auch Wert sind vom Typ string.

Mit _properties["name"] kann man eben auf das Element zugreifen welches man dem Schlüssel "name" zugeordnet hat. In diesem Fall wird es nicht gelesen sondern gesetzt. (setzt voraus, dass der Schlüssel bereits vorhanden ist).

Was [TableColumn("idRecording", NotNull = true), PrimaryKey(AutoGenerated = true)] private int idRecording; genau bewirkt kann ich dir nicht sagen. Ich weiß dass Attribute sind, die für den idRecording Member zählen. So wie es ausschaut gibt man dabei Datenbank Attribute an (Tabellenname, Nullable und das es ein Primary mit Autoincrement ist).

Gruß


r0xta - Di 04.05.10 15:18

Danke schon mal.

Kann es sein dass TableColumn eine Spalte innerhalb einer Tabelle anlegt?

Leider find ich diese Schreibweise in der mir vorliegenden Literatur so nirgends.
Hier wird es bei mir so geführt:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
[Table(Name = "Tabelle"]
public class Tabelle
{
   [Column(Name = "Spalte")]
   public string Spalte;
}

public static void Main()
{...}


In dem mir vorliegenden Quellcode geschieht dies eben wie folgt:


C#-Quelltext
1:
2:
3:
4:
5:
6:
  [TableName("Tabelle")]
  public class Tabelle
  {
    [TableColumn("Spalte")] public string Spalte;

...


... kleiner Unterschied mit dem selben Ergebnis?


r0xta - Di 04.05.10 17:27

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:

Den Zugriff mit eckigen Klammern nennt man Index


Bin ich hier richtig?:
http://msdn.microsoft.com/de-de/library/6x16t2tx%28v=VS.80%29.aspx


JüTho - Di 04.05.10 17:36

Ja, das ist das richtige Kapitel. Jürgen


Ralf Jansen - Di 04.05.10 19:58

Zitat:
Kann es sein dass TableColumn eine Spalte innerhalb einer Tabelle anlegt?

Leider find ich diese Schreibweise in der mir vorliegenden Literatur so nirgends

Da TableColumn offensichtlich ein Attribut ist und man bei Attributen wenn man sie im Code benutzt den PostFix Attribute des Klassennamens weglassen darf solltest du deine Dokumentation bzw. Source Code mal nach dem Klassennamen TableColumnAttribute durchsuchen.


r0xta - Mi 05.05.10 09:38

Vielen Dank für den Tipp.

Doku ist leider keine vorhanden (OpenSourceProjekt), deswegen muss ich mich grad mit bescheidenen Kenntnissen selbst durchwühlen.
Eine Klasse TableColumnAttribute ist auch nicht vorhanden. Sowohl als Dateiname als auch innerhalb einer Datei (Klassenname und Dateiname weichen bei dem Projekt hin und wieder voneinander ab).


Ralf Jansen - Mi 05.05.10 10:30

Dann kommt es wahrscheinlich von einem Third Party Produkt auf das dein OpenSource Projekt aufsetzt. Von der Verwendung des Attributs her errate ich mal das es sich um den Gentle.Net [http://boo.codehaus.org/Gentle.NET+ORM] ORM handelt.