İfade ağacı, isteğe bağlı bağımsız değişkenler kullanan bir çağrı veya çağrı içermeyebilir


146

İfade ağacı, isteğe bağlı bağımsız değişkenler kullanan bir çağrı veya çağrı içermeyebilir

return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));

Düzenlemenin ikinci, geçersiz bir argümanı olduğu yerde.

Bu neden?

Yanıtlar:


106

Temel alınan ifade ağacı API'sı isteğe bağlı bağımsız değişkenleri desteklemez.

IL derlenmiş kod için, C # derleyicisi varsayılan değerleri derleme zamanında ekler (sabit kodlanmış), çünkü CLR, bağımsız değişkenler açıkça sağlanmadığında isteğe bağlı bağımsız değişkenlerle çağrı yöntemlerini desteklemez.


2
Bu bir şekilde aşırı yükleri içeriyor mu? Aşırı yüklenirken bunu alıyordum. Geçersiz Blah (a dizesi) ve geçersiz Blah (a nesnesi) gibi bir şey. Ben nesne ile sürüm bir çağrı MOQ denemek, bana bu hatayı verdi.
vbullinger

4
Aşırı yükler, belirli bir aşırı yükün ağaca sabit olarak kodlanması anlamında tamamen desteklenir.
usr

1
Oldukça şifreli hata mesajı, ama bu cevap yol gösterdi, ben yöntem üzerinde varsayılan değeri olan isteğe bağlı parametre vardı alay etmeye çalışıyordu.
16'da vpalmu

143

Birden çok varsayılan parametreli bir yöntemi alay etmek için Mock.setup kullanmaya çalışırken aynı iletiye sahipti. Lambda'ya ek parametreler eklemek zorunda kaldım.

void someMethod(string arg1 = "", string arg2 = "")

mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))

1
Bu bana yardımcı oldu. Ben eksikti It.IsAny<object>. Temelde bir parametre eksiksomeMethod()
akasoggybunz

Ayrıca yöntemde her parametre için değerleri dahil emin olmak zorunda (varsayılan değerlere sahip yöntem imza birkaç parametre rağmen).
slashNburn

2
Kullanım durumuna bağlı olarak ... x.someMethod(default,default)... kullanılabilir.
LosManos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.