คำถามติดแท็ก c#

C # (ออกเสียงว่า "ดูคม") เป็นภาษาการเขียนโปรแกรมหลายกระบวนทัศน์ในระดับสูงพิมพ์แบบคงที่พัฒนาโดย Microsoft รหัส C # มักกำหนดเป้าหมายกลุ่มเครื่องมือ. NET ของ Microsoft และรันไทม์ซึ่งรวมถึง. NET Framework, .NET Core และ Xamarin เป็นต้น ใช้แท็กนี้สำหรับคำถามเกี่ยวกับโค้ดที่เขียนในข้อกำหนดทางการของ C # หรือ C #

6
MVC Razor ดูแบบจำลองของ foreach ที่ซ้อนกัน
ลองนึกภาพสถานการณ์ทั่วไปนี่เป็นเวอร์ชันที่ง่ายกว่าของสิ่งที่ฉันเจอ ที่จริงฉันมีสองชั้นที่ทำรังอยู่บนของฉัน .... แต่นี่คือสถานการณ์ ชุดรูปแบบประกอบด้วยประเภทรายการประกอบด้วย List Product มีรายการ ตัวควบคุมของฉันมีธีมที่ได้รับการเติมเต็มพร้อมด้วยหมวดหมู่ทั้งหมดสำหรับธีมนั้นผลิตภัณฑ์ในหมวดหมู่นี้และคำสั่งซื้อของพวกเขา คอลเลกชันคำสั่งซื้อมีคุณสมบัติที่เรียกว่า Quantity (ท่ามกลางอื่น ๆ อีกมากมาย) ที่ต้องแก้ไขได้ @model ViewModels.MyViewModels.Theme @Html.LabelFor(Model.Theme.name) @foreach (var category in Model.Theme) { @Html.LabelFor(category.name) @foreach(var product in theme.Products) { @Html.LabelFor(product.name) @foreach(var order in product.Orders) { @Html.TextBoxFor(order.Quantity) @Html.TextAreaFor(order.Note) @Html.EditorFor(order.DateRequestedDeliveryFor) } } } ถ้าฉันใช้แลมด้าแทนดูเหมือนว่าฉันจะได้รับการอ้างอิงไปยังวัตถุโมเดลด้านบนเท่านั้น "ธีม" ไม่ใช่สิ่งที่อยู่ในลูป foreach สิ่งที่ฉันพยายามทำนั้นเป็นไปได้หรือไม่หรือฉันประเมินค่าเกินหรือเข้าใจผิดว่าเป็นไปได้หรือไม่ จากข้างต้นฉันได้รับข้อผิดพลาดใน TextboxFor, EditorFor …

4
ทางออกที่ดีสำหรับการรอคอยในการลอง / จับ / ในที่สุด?
ฉันต้องเรียกใช้asyncเมธอดในcatchบล็อกก่อนที่จะโยนข้อยกเว้นอีกครั้ง (ด้วยการติดตามสแต็ก) เช่นนี้ try { // Do something } catch { // <- Clean things here with async methods throw; } แต่น่าเสียดายที่คุณไม่สามารถใช้awaitใน a catchหรือfinallyblock ได้ ฉันได้เรียนรู้ว่าเป็นเพราะคอมไพเลอร์ไม่มีทางย้อนกลับไปในcatchบล็อกเพื่อดำเนินการตามawaitคำสั่งของคุณหรืออะไรทำนองนั้น ... ฉันพยายามใช้Task.Wait()เพื่อแทนที่awaitและฉันมีการหยุดชะงัก ฉันค้นหาบนเว็บว่าฉันจะหลีกเลี่ยงปัญหานี้ได้อย่างไรและพบไซต์นี้ เนื่องจากฉันไม่สามารถเปลี่ยนasyncวิธีการและฉันไม่รู้ว่าพวกเขาใช้ConfigureAwait(false)หรือไม่ฉันจึงสร้างวิธีการเหล่านี้ขึ้นมาซึ่งใช้วิธีFunc<Task>เริ่มต้นวิธี async เมื่อเราอยู่ในเธรดอื่น (เพื่อหลีกเลี่ยงการหยุดชะงัก) และรอให้มันเสร็จสิ้น: public static void AwaitTaskSync(Func<Task> action) { Task.Run(async () => await action().ConfigureAwait(false)).Wait(); } public static TResult AwaitTaskSync<TResult>(Func<Task<TResult>> …

17
รูปแบบโรงงานใน C #: จะแน่ใจได้อย่างไรว่าอินสแตนซ์ออบเจ็กต์สามารถสร้างได้โดยคลาสโรงงานเท่านั้น
เมื่อเร็ว ๆ นี้ฉันคิดเกี่ยวกับการรักษาความปลอดภัยของรหัสของฉัน ฉันอยากรู้ว่าเราจะแน่ใจได้อย่างไรว่าจะไม่สามารถสร้างวัตถุได้โดยตรง แต่ด้วยวิธีการบางอย่างของคลาสโรงงานเท่านั้น สมมติว่าฉันมีคลาส "วัตถุทางธุรกิจ" และฉันต้องการตรวจสอบให้แน่ใจว่าอินสแตนซ์ใด ๆ ของคลาสนี้จะมีสถานะภายในที่ถูกต้อง เพื่อให้บรรลุสิ่งนี้ฉันจะต้องทำการตรวจสอบบางอย่างก่อนที่จะสร้างวัตถุอาจอยู่ในตัวสร้าง ทั้งหมดนี้ไม่เป็นไรจนกว่าฉันจะตัดสินใจว่าต้องการให้การตรวจสอบนี้เป็นส่วนหนึ่งของตรรกะทางธุรกิจ ดังนั้นฉันจะจัดให้ออบเจ็กต์ทางธุรกิจสามารถสร้างได้โดยใช้วิธีการบางอย่างในคลาสตรรกะทางธุรกิจของฉัน แต่ไม่สามารถสร้างได้โดยตรงได้อย่างไร ความปรารถนาแรกตามธรรมชาติที่จะใช้คีย์เวิร์ด "เพื่อน" เก่าที่ดีของ C ++ จะขาดหายไปกับ C # ดังนั้นเราจึงต้องการทางเลือกอื่น ... ลองดูตัวอย่าง: public MyBusinessObjectClass { public string MyProperty { get; private set; } public MyBusinessObjectClass (string myProperty) { MyProperty = myProperty; } } public MyBusinessLogicClass { public …

6
Marshaling - มันคืออะไรและทำไมเราถึงต้องการ?
Marshalling คืออะไรและทำไมเราถึงต้องการ? ฉันคิดว่ามันยากที่จะเชื่อว่าฉันไม่สามารถส่งintผ่านสายจาก C # ไป C และต้องจัดเรียงใหม่ ทำไม C # ไม่สามารถส่ง 32 บิตไปพร้อมกับสัญญาณเริ่มต้นและสิ้นสุดโดยบอกรหัส C ว่าได้รับint? หากมีบทเรียนหรือไซต์ที่ดีเกี่ยวกับสาเหตุที่เราต้องใช้มาร์แชลลิ่งและวิธีใช้งานนั่นจะดีมาก

12
.NET WPF จำขนาดหน้าต่างระหว่างเซสชัน
โดยทั่วไปเมื่อผู้ใช้ปรับขนาดหน้าต่างแอปพลิเคชันของฉันฉันต้องการให้แอปพลิเคชันมีขนาดเท่ากันเมื่อเปิดแอปพลิเคชันอีกครั้ง ตอนแรกฉันจัดการเหตุการณ์ SizeChanged และบันทึกความสูงและความกว้าง แต่ฉันคิดว่าต้องมีวิธีแก้ปัญหาที่ง่ายกว่านี้ ปัญหาค่อนข้างง่าย แต่ฉันไม่สามารถหาวิธีแก้ปัญหาได้ง่ายๆ
94 c#  .net  wpf  windows 

7
รับไฟล์ตามวันที่สร้างใน. NET
ฉันมีโฟลเดอร์ที่มีไฟล์มากมาย มีวิธีง่ายๆในการรับชื่อไฟล์ในไดเร็กทอรีที่เรียงตามวันที่ / เวลาที่สร้างหรือไม่? ถ้าฉันใช้Directory.GetFiles()มันจะส่งคืนไฟล์ที่เรียงตามชื่อไฟล์
94 c#  .net  file 

3
ผสานเซลล์โดยใช้ EPPlus?
ฉันใช้ไลบรารี EPPlus เพื่ออ่าน / เขียนไฟล์ Excel: http://epplus.codeplex.com/ ฉันกำลังพยายามผสานเซลล์บางเซลล์เมื่อเขียนเอกสาร: using (ExcelPackage pck = new ExcelPackage()) { //Create the worksheet ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Demo"); //Format the header for column 1-3 using (ExcelRange rng = ws.Cells["A1:C1"]) { bool merge = rng.Merge; } } มีคุณสมบัติที่ชื่อ Merge ที่เพียงแค่คืนค่าจริงหรือเท็จ ฉันคิดว่านั่นอาจจะรวมเซลล์ แต่ก็ไม่ได้ ใครทราบวิธีการทำเช่นนี้
94 c#  asp.net  excel  epplus 

12
ทำความเข้าใจกับ setters ส่วนตัว
ฉันไม่เข้าใจความจำเป็นของการมีตัวตั้งค่าส่วนตัวซึ่งเริ่มต้นด้วย C # 2 การมีวิธี setter สำหรับฉันคือให้ผู้ใช้กำหนดตัวแปรบางตัวในคลาสนั้น ในการดำเนินการดังกล่าวเราจะไม่เปิดเผยตัวแปรให้กับผู้ใช้โดยตรง แต่เราปล่อยให้พวกเขาทำผ่านวิธีการตั้งค่าสาธารณะนี้ สิ่งนี้สำหรับฉันคือการใช้ "การห่อหุ้ม" มีข้อโต้แย้งบางประการที่อ้างว่าตัวตั้งค่าส่วนตัวจะอนุญาตให้คุณใช้การห่อหุ้ม ฉันไม่ได้ใช้การห่อหุ้มโดยใช้วิธีการตั้งค่าสาธารณะหรือไม่? ทำไมเราถึงต้องการตัวตั้งค่าส่วนตัว? อะไรคือความแตกต่างระหว่างคลาสที่ไม่เปลี่ยนรูปและคลาสที่มีตัวตั้งค่าส่วนตัว?
94 c# 

12
เพจด้วย LINQ สำหรับวัตถุ
คุณจะใช้การเพจในแบบสอบถาม LINQ ได้อย่างไร จริงๆแล้วในตอนนี้ฉันจะพอใจถ้าฟังก์ชัน sql TOP สามารถเลียนแบบได้ อย่างไรก็ตามฉันมั่นใจว่าความต้องการการสนับสนุนการเพจเต็มรูปแบบจะเกิดขึ้นในภายหลัง var queryResult = from o in objects where ... select new { A = o.a, B = o.b } ????????? TOP 10????????
94 c#  .net  linq  paging 

9
ฉันจะแสดงรายการแพ็คเกจ NuGet ที่ติดตั้งทั้งหมดได้อย่างไร?
หนึ่งรายการแพ็คเกจ NuGet ที่ติดตั้งในเครื่องทั้งหมดได้อย่างไร? มี NuGet เทียบเท่าRPM -qaหรือไม่? ภายในChocolateyมีchocolatey list -localonlyแต่สำหรับชีวิตของฉันฉันไม่สามารถหา NuGet ที่เทียบเท่ากับคำสั่งนั้นได้

9
ปลอดภัยสำหรับโครงสร้างในการใช้อินเทอร์เฟซหรือไม่?
ฉันดูเหมือนจะจำได้ว่าอ่านบางอย่างเกี่ยวกับการที่โครงสร้างในการใช้อินเทอร์เฟซใน CLR ผ่าน C # ไม่ดี แต่ดูเหมือนว่าฉันจะไม่พบอะไรเลย มันแย่ไหม? มีผลที่ไม่พึงประสงค์จากการทำเช่นนั้นหรือไม่? public interface Foo { Bar GetBar(); } public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
94 c#  interface  struct 

2
Moq, SetupGet, การเยาะเย้ยคุณสมบัติ
ฉันพยายามล้อเลียนคลาสที่เรียกว่าUserInputEntityซึ่งมีคุณสมบัติที่เรียกว่าColumnNames: (มันมีคุณสมบัติอื่น ๆ ฉันเพิ่งทำให้มันง่ายขึ้นสำหรับคำถาม) namespace CsvImporter.Entity { public interface IUserInputEntity { List<String> ColumnNames { get; set; } } public class UserInputEntity : IUserInputEntity { public UserInputEntity(List<String> columnNameInputs) { ColumnNames = columnNameInputs; } public List<String> ColumnNames { get; set; } } } ฉันมีชั้นเรียนผู้นำเสนอ: namespace CsvImporter.UserInterface { public interface IMainPresenterHelper { //... …
94 c#  c#-4.0  properties  moq 

9
.NET Core 3.0: มุมมองมีดโกนไม่คอมไพล์ใหม่โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลง
ตามเอกสารประกอบมุมมอง Razor ควรคอมไพล์ใหม่ตามการเปลี่ยนแปลงในสภาพแวดล้อมภายในสำหรับ ASP.NET Core 3.0 อย่างไรก็ตามโครงการของฉันไม่ได้ทำในพื้นที่ หากฉันเปลี่ยนมุมมองและรีเฟรชเมื่อฉันแก้ไขจุดบกพร่องภายในเครื่องการเปลี่ยนแปลงจะไม่สะท้อนให้เห็น ฉันต้องหยุดการแก้ปัญหารันใหม่แล้วจึงเห็นการเปลี่ยนแปลง ฉันกำลังทำสิ่งนี้บนเทมเพลต ASP.NET Core Web Application เริ่มต้นบน Visual Studio 2019 ด้วย ASP.NET Core 3.0.0 Preview 2 โดยใช้เพจ Razor หากฉันต้องการเปลี่ยนการตั้งค่าเพื่อเปิดใช้คุณลักษณะนี้มีความคิดอย่างไร อัปเดตพฤศจิกายน 2019 สำหรับ 3.0 การเปิดตัวเต็ม: คำถามนี้ยังคงได้รับการดูมากมาย มีการอ้างถึงคำตอบสองสามข้อเพื่อเพิ่ม services.AddControllersWithViews().AddRazorRuntimeCompilation(); ไปยังConfigureServices()ฟังก์ชั่นของคุณStartup.csหลังจากเพิ่มMicrosoft.AspNetCore.Mvc.Razor.RuntimeCompilationแพ็คเกจ NuGet AddControllersWithViews()ในกรณีของฉันฉันเป็นเพียงการใช้มีดโกนหน้าดังนั้นผมจึงไม่ได้โทร แต่สิ่งนี้ใช้ได้ผลสำหรับฉัน: services.AddRazorPages().AddRazorRuntimeCompilation();

10
ลำดับของการดำเนินการตัวจัดการเหตุการณ์
หากฉันตั้งค่าตัวจัดการเหตุการณ์หลายตัวเช่น: _webservice.RetrieveDataCompleted += ProcessData1; _webservice.RetrieveDataCompleted += ProcessData2; สิ่งที่สั่งซื้อจะถูกขนย้ายวัสดุทำงานเมื่อมีเหตุการณ์RetrieveDataCompletedยิง? พวกเขาทำงานในเธรดเดียวกันและเรียงตามลำดับตามลำดับที่ลงทะเบียนหรือไม่?

7
ตรวจสอบว่า HttpStatusCode แสดงถึงความสำเร็จหรือล้มเหลว
สมมติว่าฉันมีตัวแปรต่อไปนี้: System.Net.HttpStatusCode status = System.Net.HttpStatusCode.OK; ฉันจะตรวจสอบได้อย่างไรว่านี่เป็นรหัสสถานะความสำเร็จหรือรหัสล้มเหลว ตัวอย่างเช่นฉันสามารถทำสิ่งต่อไปนี้: int code = (int)status; if(code >= 200 && code < 300) { //Success } ฉันสามารถมีรายการสีขาวบางประเภท: HttpStatusCode[] successStatus = new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.Created, HttpStatusCode.Accepted, HttpStatusCode.NonAuthoritativeInformation, HttpStatusCode.NoContent, HttpStatusCode.ResetContent, HttpStatusCode.PartialContent }; if(successStatus.Contains(status)) //LINQ { //Success } ทางเลือกเหล่านี้ไม่มีทางเลือกใดที่ทำให้ฉันมั่นใจและฉันหวังว่าจะมีคลาส. NET หรือวิธีการที่สามารถทำงานนี้ให้ฉันได้เช่น: bool isSuccess = HttpUtilities.IsSuccess(status);
94 c#  .net  system.net 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.