Autor Beitrag
Ares
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 128



BeitragVerfasst: Mo 18.10.10 09:14 
Hallo!

Bei einem aktuellen Projekt benötige ich an verschiedenen Stellen eine unterschiedliche Klassen, die jeweils unterschiedliche ein Objektpaare speichern. Die Objektpaar können z.B. ein Schlüssel und ein Wert, zwei Koordinaten, ein Datum und ein Ort, ein Benutzer und ein Passwort, etc. sein. Es geht also um ganz unterschiedliche Typen:

Nun kann man natürlich für jedes mögliche Objektpaar eine eigene Klasse schreiben die diese aufnimmt. Da sich nur die verwendeten Typen unterschieden wäre aber aber eine generische Klasse wesentlich sinnvoller. KeyValuePair<> wäre z.B. solche eine fertige Klasse die verwendet werden könnte.

Das Problem hierbei ist aber, dass KeyValuePair den Zugriff über die Eigenschaften "Key" und "Value" ermöglicht. Soll nun aber kein Key-Value Paar gespeichert werden ein Benutzer und ein Passwort, wäre der Zugriff auf diese über "Key" und "Value" nicht gerade intuitiv. Der Benutzer ist kein Key, und das Passwort ist kein Value... Entsprechender Code wäre wohl recht unleserlich...

Natürlich kann ich eine eigene generische Klasse schreiben, bei der die Eigenschaften "Value1" und "Value2" heißen. Das wäre aber nur wenig besser.

Gibt es stattdessen nicht die Möglichkeit auch die Namen von Eigenschaften bei einer Generischen Klassen anzugeben? Also nicht nur "KeyValuePair<string, string>" sondern etwas wie "KeyValuePair<string [Username], string [Password]>"...?

Besten Dank
Ares
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 18.10.10 11:04 
Hallo,

nicht das ich wüsste, aber Key und Value ist durchaus "intuitiv" da es seit Jahren die Standardformulierung ist. Es ist halt abhängig wie du den "Speicher" nennst. Sagst du einfach KeyValueCollection hat man natürlich Schwierigkeiten die Zuordnung zu verstehen. Nennst du es UserPasswordDictionary versteht man es wohl eher. Darüber hinaus denke ich, dass Objekte mehr Sinn als Strings machen, z.B. Dictionary<User, Password> bzw. Dictionary<User, string>. Dann ist der Schlüssel klar.

Gruß
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 18.10.10 21:16 
user profile iconAres hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es stattdessen nicht die Möglichkeit auch die Namen von Eigenschaften bei einer Generischen Klassen anzugeben?
Das wären dann wohl eher Templates von C++. Aber da du bei einer eigenen Klasse in fünf läppischen Zeilen beschreibende Property-Namen und Klassen-Name bekommst, sehe ich da wirklich wenig Verlust ;) .

_________________
>λ=