ทรีนิพจน์อาจไม่มีการเรียกหรือการเรียกที่ใช้อาร์กิวเมนต์ที่เป็นทางเลือก
return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
ตำแหน่งที่แก้ไขมีอาร์กิวเมนต์ที่สองและไม่สามารถใช้ได้
ทำไมนี้
ทรีนิพจน์อาจไม่มีการเรียกหรือการเรียกที่ใช้อาร์กิวเมนต์ที่เป็นทางเลือก
return this.RedirectToAction<MerchantController>(x => x.Edit(merchantId));
ตำแหน่งที่แก้ไขมีอาร์กิวเมนต์ที่สองและไม่สามารถใช้ได้
ทำไมนี้
คำตอบ:
พื้นฐานต้นไม้แสดงออก APIไม่สนับสนุนข้อโต้แย้งที่ไม่จำเป็น
สำหรับโค้ดที่คอมไพล์ด้วย IL คอมไพเลอร์ C # จะแทรกค่าเริ่มต้น ณ เวลารวบรวม (ฮาร์ดโค้ด) เนื่องจาก CLR ไม่สนับสนุนวิธีการโทรด้วยอาร์กิวเมนต์ที่เป็นตัวเลือกเมื่ออาร์กิวเมนต์ไม่ได้ให้ไว้อย่างชัดเจน
มีข้อความเดียวกันเมื่อพยายามใช้ Mock.setup เพื่อจำลองวิธีที่มีพารามิเตอร์เริ่มต้นหลายรายการ ฉันแค่ต้องเพิ่มพารามิเตอร์เพิ่มเติมในแลมบ์ดา
void someMethod(string arg1 = "", string arg2 = "")
mockedObject.Setup(x => x.someMethod(It.IsAny<string>(), It.IsAny<string>()))
It.IsAny<object>
ผมก็หายไป โดยทั่วไปฉันไม่มีพารามิเตอร์สำหรับsomeMethod()
x.someMethod(default,default)
สามารถใช้