Laden...

Statische generische Methode?

Erstellt von Rushmore vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.649 Views
R
Rushmore Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren
Statische generische Methode?

Moin,

mir schwebt folgende Syntax vor:

int trialCount = Parameter.GetValue<int>("TrialCount");
double destinationRadius = Parameter.GetValue<double>("DestinationRadius");

usw.

Die Werte liegen in der DB in einem nText Feld.
Das gecastet werden muss, ist klar.

Wie kann ich das möglichst flexible lösen?

Ansätze:

  1. für jeden Wert eine Methode mit den richtigen Rückgabewert definieren

int trialCount = Parameter.GetTrialCount();
double destinationRadius = Parameter.GetDestinationRadius() ;

  1. den Rückgabetyp an die Methode übergeben, und anschließend trotzdem casten

int trialCount = (int)Parameter.GetValue("TrialCount", typeof(int));

  1. ?( ?( ?(

Wer hat da mal ≥ eine Idee für mich ?(

Gruß,
Carlo

B
1.529 Beiträge seit 2006
vor 17 Jahren

Wenn du eine eindeutige Beziehung Parametername <=> Parametertyp hast, sind jeweils eigene Methoden empfehlenswert.
Nur falls deine Klasse allgemein auf unbekannte Typen mit unbekannten Namen losgelassen würde (beispielsweise zur Abfrage von INI-Dateien), würde ich

public static T GetValue<T>( string ValueName )

verwenden.

R
Rushmore Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

Die Parameter und Datentypen sind mir bekannt.

Ich wollte eigentlich nur vermeiden, dass ich für jeden neuen Parameter eine neue Methode fummeln muss.

public static T GetValue<T>( string ValueName ) 

Das sieht ja schon ganz nett aus, aber wie geht es weiter? Ich habe mich noch nicht generell mit Generics beschäftigt.

Gruß,
Carlo

N
4.644 Beiträge seit 2004
vor 17 Jahren

Original von Rushmore
Das sieht ja schon ganz nett aus, aber wie geht es weiter?

Nun implementierst Du Deine Methode? Oder was meinst Du?

R
Rushmore Themenstarter:in
69 Beiträge seit 2006
vor 17 Jahren

public static T GetValue<T>(string parameterKey)
{
    T value;

    // Der zu lesende Wert aus der DB ist nText bzw. string
   string dbValue = DAL.Parameter.GetValueByParameterKey(parameterKey);

    // jetzt muss dbValue noch irgendwie in den DatenTyp T gecastet werden
    // wie stelle ich das an?

    return value;
}

Gruß,
Carlo