2013-03-28 16 views
12

Ben ASP.NET öğreniyorum ve bu yöntem bildiriminde tökezledi: öğretici ama soru (URL'den, & id = 5 gibi) categoryId dize "id" sorgulamak eşit olacağını söylediC# 'daki fonksiyon parametresindeki kare parantez söz dizimi?

public IQueryable<Product> GetProducts([QueryString("id")] int? categoryId) {.....} 

[QueryString("id")] sözdizimi nedir? Bu ASP.NET dışında kullanılabilir mi ve bunun uygulaması ne olacak? parametresi categoryId-QueryStringAttribute özelliğini uygulayarak ediyor

cevap

15

. Bu muhtemelen böyle, yöntemler veya sınıflara görmeye kullanılan konum şimdi olduğu gibi, sadece bir özellik var: Bu durumda

[STAThread] 
static void Main() 
{ 
} 

, çerçeve (ı bir ASP değilim ait tahminen kısmını. NET geliştiricisi, bu yüzden işaret edemez tam neyi), sonra parametrelere uygulanan QueryStringAttribute değerleri bulmak, tüm yöntemleri bulmak için yansıma kullanarak ve sonra sorgu dizesindeki isimlerle bu özelliklerle içinde eşleşen adları olan Yöntem çağrısına geçmek için eşleşen değerleri ayıklamak (yansıma kullanarak).

+0

"attribute" ile şunu demek istediniz: http://msdn.microsoft.com/en-us/library/z0w1kczw(v=vs.80).aspx Özellik, verileri tanımlamak için kullanılır? AFAIK özniteliği sadece bir meta veridir, bu nasıl gerçek değere dönüştürebilir ve categoryId'ye uygulanabilir? – 5argon

+0

@Sargon: Bu meta, evet - bu parametre kendisi ... uygulandığından ve ASP.NET otomatik GetProducts çağırmak için nasıl çalışmak için bu meta verileri kullanabilir. Bunu belirtmek için cevabı düzenleyecektir. –

+1

Yansıma hakkında cevap için teşekkürler. Kendi öznitelik ve yansıtma tekniğini yazmak isteyen herkes için şu an okuduğum sayfa: http://msdn.microsoft.com/en-us/library/z919e8tw(v=vs.80).aspx – 5argon

İlgili konular