Viac na
Ako môžete v jazyku C# používať voliteľné parametre?
Poznámka: Táto otázka bola položená v čase, keď jazyk C# ešte nepodporoval voliteľné parametre (t. j. pred C# 4).
Vytvárame webové API, ktoré'je programovo generované z triedy jazyka C#. Trieda má metódu GetFooBar(int a, int b)
a API má metódu GetFooBar
prijímajúcu parametre dotazu typu &a=foo &b=bar
.
Triedy musia podporovať voliteľné parametre, čo jazyk C# nepodporuje. Aký je najlepší prístup?
455
3
V jazyku C# by som normálne použil viacero foriem metódy:
DOPLNENIE: Uvedené bolo spôsob, akým som v jazyku C# 2.0 robil predvolené hodnoty. Projekty, na ktorých teraz pracujem, používajú jazyk C# 4.0, ktorý teraz priamo podporuje voliteľné parametre. Tu je príklad, ktorý som práve použil vo svojom vlastnom kóde:
Z tejto stránky:
http://www.tek-tips.com/viewthread.cfm?qid=1500861&page=1
Jazyk C# umožňuje používať atribút [Optional] (z VB, hoci v C# nie je funkčný). Takže môžete mať takúto metódu:
V našom API wrapperi zisťujeme voliteľné parametre (ParameterInfo p.IsOptional) a nastavujeme predvolenú hodnotu. Cieľom je označiť parametre ako voliteľné bez toho, aby sme sa uchyľovali k takým kľučkám, ako je "optional" v názve parametra.
Môžete použiť preťaženie metód...
Závisí to od signatúr metód, v príklade, ktorý som uviedol, chýba len metóda "int b", pretože by mala rovnakú signatúru ako metóda "int a".
Mohli by ste použiť typy Nullable...
Potom by ste mohli pomocou a.HasValue skontrolovať, či bol parameter nastavený.
Ďalšou možnosťou by bolo použiť parameter 'params'.
Ak by ste chceli použiť pomenované parametre, museli by ste vytvoriť typ na ich spracovanie, hoci si myslím, že niečo také už existuje pre webové aplikácie.