C#'ta isteğe bağlı parametreleri nasıl kullanabilirsiniz?
Not: Bu soru, C#'ın henüz isteğe bağlı parametreleri desteklemediği bir zamanda (yani C# 4'ten önce) sorulmuştur.
Bir C# sınıfından programlı olarak oluşturulan bir web API'si oluşturuyoruz. Sınıfın GetFooBar(int a, int b)
yöntemi var ve APInin
&a=foo &b=bargibi sorgu parametrelerini alan bir
GetFooBar` yöntemi var.
Sınıfların, C# dilinde desteklenmeyen isteğe bağlı parametreleri desteklemesi gerekir. En iyi yaklaşım nedir?
455
3
C#'ta normalde yöntemin birden fazla formunu kullanırdım:
GÜNCELLEME: Yukarıda bahsedilen, C# 2.0 ile varsayılan değerleri yaptığım yoldu. Şu anda üzerinde çalıştığım projeler, artık isteğe bağlı parametreleri doğrudan destekleyen C# 4.0 kullanıyor. İşte kendi kodumda kullandığım bir örnek:
Bu siteden:
http://www.tek-tips.com/viewthread.cfm?qid=1500861&page=1
C# [Optional] niteliğinin kullanımına izin verir (C#'ta işlevsel olmasa da VB'den). Yani şöyle bir yönteminiz olabilir:
API sarmalayıcımızda, isteğe bağlı parametreleri tespit ediyoruz (ParameterInfo p.IsOptional) ve varsayılan bir değer ayarlıyoruz. Amaç, parametre adında "optional" olması gibi kludge'lara başvurmadan parametreleri isteğe bağlı olarak işaretlemektir.
Metot aşırı yüklemesini kullanabilirsin...
Yöntem imzalarına bağlıdır, verdiğim örnekte sadece "int b" yöntemi eksiktir çünkü "int a" yöntemi ile aynı imzaya sahip olacaktır.
Nullable türleri kullanabilirsiniz...
Daha sonra a.HasValue kullanarak bir parametrenin ayarlanıp ayarlanmadığını kontrol edebilirsiniz.
Başka bir seçenek de bir 'params' parametresi kullanmak olabilir.
Adlandırılmış parametreler kullanmak isterseniz, bunları işlemek için bir tür oluşturmanız gerekecektir, ancak web uygulamaları için zaten böyle bir şey olduğunu düşünüyorum.