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

C # เป็นภาษาการเขียนโปรแกรมเชิงวัตถุที่มีการจัดการและรวบรวมขยะที่สร้างขึ้นโดย Microsoft ควบคู่ไปกับแพลตฟอร์ม. NET


2
การแยกการเข้าถึงข้อมูลใน ASP.NET MVC
ฉันต้องการตรวจสอบให้แน่ใจว่าฉันปฏิบัติตามมาตรฐานอุตสาหกรรมและแนวปฏิบัติที่ดีที่สุดกับการแตกที่แท้จริงครั้งแรกของฉันที่ MVC ในกรณีนี้คือ ASP.NET MVC โดยใช้ C # ฉันจะใช้ Entity Framework 4.1 สำหรับโมเดลของฉันโดยมีวัตถุเป็นรหัสแรก (ฐานข้อมูลมีอยู่แล้ว) ดังนั้นจะมีวัตถุ DBContext สำหรับดึงข้อมูลจากฐานข้อมูล ในการสาธิตที่ฉันได้อ่านผ่านเว็บไซต์ asp.net ผู้ควบคุมจะมีรหัสการเข้าถึงข้อมูลอยู่ สิ่งนี้ดูไม่ถูกต้องสำหรับฉันโดยเฉพาะอย่างยิ่งเมื่อทำตามแนวทางปฏิบัติของ DRY (อย่าทำซ้ำตัวเอง) ตัวอย่างเช่นสมมติว่าฉันกำลังเขียนแอปพลิเคชันเว็บที่จะใช้ในห้องสมุดสาธารณะและฉันมีตัวควบคุมสำหรับการสร้างอัปเดตและลบหนังสือในแคตตาล็อก การกระทำหลายอย่างอาจใช้ ISBN และต้องการส่งคืนวัตถุ "หนังสือ" (โปรดทราบว่านี่อาจไม่ใช่รหัสที่ถูกต้อง 100%): public class BookController : Controller { LibraryDBContext _db = new LibraryDBContext(); public ActionResult Details(String ISBNtoGet) { Book currentBook = _db.Books.Single(b …

6
การกำหนดประเภทข้อมูลตัวแปรอย่างชัดเจนเมื่อเทียบกับการใช้คำหลัก 'var' [ปิด]
ใน C # ฉันขอแนะนำให้ใช้คำหลัก var all-purpose สำหรับการประกาศตัวแปรทั้งหมดหรือไม่ ถ้าใช่ฉันต้องพูดถึงอักขระพิเศษเหล่านั้นสำหรับค่าตัวอักษรภายในการประกาศตัวแปรเช่น M สำหรับทศนิยมในคำสั่งต่อไปนี้: var myDecimal = 14.5M; ถ้ามันสร้างความแตกต่างฉันพยายามที่จะพัฒนาเว็บไซต์ด้วย C #

3
การแคชที่ชั้นธุรกิจเทียบกับการแคชที่ชั้นข้อมูล
ฉันมักจะทำงานในโครงการที่ทำแคชบน DAL โดยทั่วไปเมื่อคุณกำลังจะโทรไปยังฐานข้อมูลนั้นจะตรวจสอบว่าข้อมูลมีอยู่ในแคชแล้วหรือไม่และถ้าเป็นเช่นนั้นก็ไม่ได้ทำการโทรและ ส่งคืนข้อมูลนั้นแทน ฉันเพิ่งอ่านเกี่ยวกับการแคชที่ชั้นธุรกิจดังนั้นโดยทั่วไปแล้วการแคชวัตถุธุรกิจทั้งหมด ข้อดีอย่างหนึ่งที่ฉันเห็นได้ทันทีคือเวลาตอบสนองที่ดีกว่ามาก เมื่อไหร่ที่คุณจะชอบอีกอันหนึ่ง? และการแคชที่ชั้นธุรกิจเป็นเรื่องธรรมดาหรือไม่

2
แบบแผนการตั้งชื่อ DAL, BAL และเลเยอร์ UI [ปิด]
ฉันกำลังพัฒนาเว็บแอปพลิเคชันทั่วไปด้วยเลเยอร์ต่อไปนี้ เลเยอร์ UI (MVC) ชั้นตรรกะทางธุรกิจ (BAL) ชั้นการเข้าถึงข้อมูล (DAL) แต่ละชั้นมีวัตถุ DTO ของตัวเองรวมถึง BAL และ DAL คำถามของฉันเกี่ยวกับเรื่องนี้มีดังนี้ DTO ที่ส่งคืนโดย DAL จะถูกแปลงเป็น DTO ที่สอดคล้องกันใน BAL และส่งไปยังเลเยอร์ UI ทั้งคุณลักษณะและโครงสร้างของวัตถุ DTO เหมือนกันในบางกรณี ในสถานการณ์ดังกล่าวจะเป็นการดีกว่าที่จะเพียงแค่ส่งกลับ DTO ใน DAL ไปยังเลเยอร์ UI โดยไม่รวมวัตถุระดับกลาง เป็นวิธีที่ดีที่สุดในการตั้งชื่อวัตถุ DTO เหล่านี้และวัตถุอื่น ๆ ในแต่ละชั้น ฉันควรใช้คำนำหน้าเช่น DTOName, ServiceName หรือไม่ เหตุผลที่ฉันขอให้ใช้คำนำหน้าเป็นเพราะถ้าไม่ใช่คลาสในโซลูชันของฉันขัดแย้งกับคลาสอื่น ๆ ใน Framework และด้วยคำนำหน้ามันง่ายกว่าที่ฉันจะเข้าใจว่าแต่ละคลาสอยู่ที่ไหน?
35 c#  design  naming 

9
เป็นการดีที่จะสืบทอดจากประเภททั่วไปหรือไม่?
มันจะดีกว่าที่จะใช้List<string>ในคำอธิบายประกอบประเภทหรือStringListที่ไหนStringList class StringList : List<String> { /* no further code!*/ } ฉันวิ่งเข้าไปในหลายของเหล่านี้ในประชด
35 c#  inheritance 

5
วิธีที่ดีที่สุดในการทดสอบหน่วยวิธีการที่เรียกวิธีการอื่น ๆ ในชั้นเรียนเดียวกัน
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับเพื่อนบางคนซึ่งวิธีการ 2 วิธีต่อไปนี้ดีที่สุดในการส่งคืนผลลัพธ์หรือการโทรไปยังวิธีการในชั้นเรียนเดียวกันจากวิธีการในชั้นเรียนเดียวกัน นี่เป็นตัวอย่างที่ง่ายมาก ในความเป็นจริงฟังก์ชั่นมีความซับซ้อนมากขึ้น ตัวอย่าง: public class MyClass { public bool FunctionA() { return FunctionB() % 2 == 0; } protected int FunctionB() { return new Random().Next(); } } ดังนั้นเพื่อทดสอบสิ่งนี้เรามี 2 วิธี วิธีที่ 1: ใช้ฟังก์ชั่นและการกระทำเพื่อแทนที่ฟังก์ชั่นของวิธีการ ตัวอย่าง: public class MyClass { public Func<int> FunctionB { get; set; } …

3
การพัฒนา Java โดยทั่วไปเกี่ยวข้องกับคลาสย่อยมากกว่า C # /. NET หรือไม่
ฉันเพิ่งเริ่มดูการพัฒนา Android สิ่งนี้นำฉันกลับสู่โลกของการพัฒนาซอฟต์แวร์ Java ครั้งสุดท้ายที่ฉันทำงานกับ Java ฉันจะยอมรับว่าฉันไม่เข้าใจ OOP เท่าที่ฉันคิดตอนนี้ หลังจากใช้งาน C # เป็นส่วนใหญ่ในอาชีพของฉันฉันสังเกตเห็นความแตกต่างที่น่าตกใจในการใช้ Java และ C # ในการสืบทอด ใน C # ดูเหมือนว่าสามารถหลีกเลี่ยงการสืบทอดในสถานการณ์ส่วนใหญ่ งานในมือสามารถทำได้โดยใช้คลาสที่เป็นรูปธรรมของ. NET Framework ใน Java จากสิ่งที่ฉันรวบรวมจากตัวอย่างโค้ดดูเหมือนว่า Java framework จะให้ส่วนต่อประสานหรือคลาสนามธรรมที่มีความหมายที่จะนำไปใช้ / ขยายโดยนักพัฒนา ดูเหมือนว่าจะมีความแตกต่างใหญ่เกินไปที่จะทำให้สไตล์ อะไรคือเหตุผลเบื้องหลังสิ่งนี้ ฉันรู้สึกว่าฉันจะไม่เขียนโค้ด Java ที่สะอาดจนกว่าฉันจะเข้าใจสิ่งนี้ นอกจากนี้ยังมีข้อ จำกัด เพียงแค่ Android SDK หรือนี่เป็นแนวทางแบบกว้าง ๆ ของ OOP หรือไม่? หรือใส่ในอีกทางหนึ่ง มันเกี่ยวกับการออกแบบของสองภาษานี้ที่ดูเหมือนว่าจะส่งเสริมให้ใช้มรดกมากกว่าหรือน้อยกว่าอีก? …

9
การตรวจสอบพารามิเตอร์ Constructor ใน C # - แนวปฏิบัติที่ดีที่สุด
แนวปฏิบัติที่ดีที่สุดสำหรับการตรวจสอบความถูกต้องของพารามิเตอร์คอนสตรัคเตอร์คืออะไร? สมมติว่า C # เป็นเรื่องง่าย: public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } มันจะเป็นที่ยอมรับที่จะโยนข้อยกเว้น? ทางเลือกที่ฉันพบคือการตรวจสอบความถูกต้องก่อนที่จะสร้างอินสแตนซ์: public class CallingClass { public MyClass MakeMyClass(string text) { if (String.IsNullOrEmpty(text)) { MessageBox.Show("Text cannot be empty"); return null; } else …

11
Java vs. C # - เปอร์สเปคทีฟการทำงาน [ปิด]
หากคุณมีประสบการณ์หลายปีในการทำงานกับ Java และประสบการณ์หลายปีในการทำงานกับ C # และ. NET ฉันจะให้ความคิดเห็นของคุณเกี่ยวกับความแตกต่างของประสิทธิภาพการพัฒนาซอฟต์แวร์ระหว่างสองสภาพแวดล้อมนี้ ลูกค้าคนหนึ่งของเรากำลังพิจารณาที่จะเปลี่ยนโซลูชันซอฟต์แวร์ที่มีอยู่ ในฐานะที่เป็นทดแทนจะต้องมีประมาณ 10 - 15 ปีคนทำงานตัวเลือกสำหรับ Java หรือ. NET บนพื้นฐานของความแตกต่างของการผลิตระหว่างพวกเขาอาจมีอิทธิพลต่อการลงทุนที่จำเป็นและเวลาในการตลาดอย่างมีนัยสำคัญ คุณจะสามารถให้เราเป็นตัวบ่งชี้ถึงความแตกต่างของประสิทธิภาพการพัฒนาซอฟต์แวร์ระหว่าง Java และ C # /. NET หรือไม่ ฉันต้องการรับคำตอบดังนี้: ประสบการณ์ของฉันขึ้นอยู่กับประสบการณ์ X ปีที่ทำงานกับ Java และประสบการณ์ X ปีที่ทำงานกับ C # /. NET Java มีประสิทธิภาพเพิ่มขึ้น X% แล้ว C # .NET หรือ C # /. NET …

1
รหัสไม่เกี่ยวข้องแห้ง แต่เกือบจะเหมือนกัน
ฉันมีรหัสบางอย่างที่เกือบจะเหมือนกัน แต่ใช้ประเภทที่แตกต่างกันอย่างสิ้นเชิงโดยไม่มีการสืบทอดระหว่างตัวแปรหลัก โดยเฉพาะฉันเขียนวิเคราะห์ด้วย Roslyn สำหรับ C # และ VB.NET ด้วยประเภทต่อไปนี้: Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax ฉันสงสัยว่าเนื่องจากรหัสกำลังทำสิ่งเดียวกันฉันควรเก็บไว้เป็น DRY เท่าที่จะทำได้โดยแยกออกน้อยที่สุดเท่าที่จะทำได้เป็นวิธีแยกต่างหาก (แต่เหมือนกันนอกเหนือจากชนิด) หรือแยกออกจากกันอย่างสิ้นเชิงเพราะทั้งสองวิธี การเปลี่ยนแปลงที่ไม่เกี่ยวข้องและในอนาคตอาจบังคับให้รุ่นหนึ่งเปลี่ยนแปลง แต่ไม่ใช่รุ่นอื่น ๆ (แม้ว่าจะไม่น่าเป็นไปได้) แก้ไข:หนึ่งปีหรือหลังจากนั้นฉันก็ตีปัญหาเดียวกันนี้และทีม Roslyn ช่วยฉันแก้ปัญหา: เขียนคลาสพื้นฐานที่ใช้ชื่อสามัญและมีTAttributeSyntaxพารามิเตอร์ที่ใช้งานได้เกือบทั้งหมด จากนั้นให้เขียนคลาสที่ได้รับมาพร้อมกับข้อมูลขั้นต่ำสุดที่จำเป็นต้องใช้ประเภทเฉพาะ
33 c#  design  dry 

3
มีค่าจริงในการทดสอบหน่วยควบคุมใน ASP.NET MVC หรือไม่?
ฉันหวังว่าคำถามนี้จะให้คำตอบที่น่าสนใจเพราะเป็นคำถามที่ทำให้ฉันอึดใจ มีค่าจริงในการทดสอบหน่วยควบคุมใน ASP.NET MVC หรือไม่? สิ่งที่ฉันหมายถึงโดยส่วนใหญ่แล้ว (และฉันไม่มีอัจฉริยะ) วิธีการควบคุมของฉันคือแม้สิ่งที่ซับซ้อนที่สุดของพวกเขาเช่นนี้: public ActionResult Create(MyModel model) { // start error list var errors = new List<string>(); // check model state based on data annotations if(ModelState.IsValid) { // call a service method if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors)) { // all is well, data is saved, // …

6
ฉันต้องการเขียนอัลกอริทึม "ultimate shuffle" เพื่อเรียงลำดับคอลเลกชัน mp3 ของฉัน
ฉันกำลังมองหาข้อเสนอแนะ pseudocode สำหรับจัดเรียงไฟล์ mp3 ของฉันในทางที่หลีกเลี่ยงชื่อและศิลปินซ้ำ ฉันฟัง crooners - Frank Sinatra, Tony Bennett, Ella Fitzgerald ฯลฯ ร้องเพลงมาตรฐานเก่า ศิลปินแต่ละคนบันทึกเพลงเดียวกันหลายเพลง - Fly Me To The Moon, The Way You Look Tonight, Stardust ฯลฯ เป้าหมายของฉันคือการจัดเรียงเพลง (หรือสั่งซื้อเพลย์ลิสต์) ด้วยพื้นที่สูงสุดระหว่างศิลปินและชื่อเพลง ดังนั้นถ้าฉันมี 2,000 เพลงและ 20 เพลงเป็นโดยเอลล่าฉันอยากจะได้ยินเธอเพียงครั้งเดียวในทุก ๆ 100 เพลง หากศิลปิน 10 คนร้องเพลง Fly Me To The Moon ฉันอยากได้ยินทุก …

8
SOLID, หลีกเลี่ยงโดเมนโลหิตจาง, การฉีดพึ่งพา?
แม้ว่านี่อาจเป็นคำถามที่ไม่เชื่อเรื่องภาษา แต่ฉันก็สนใจที่จะตอบคำถามเกี่ยวกับระบบนิเวศ. NET นี่คือสถานการณ์สมมติว่าเราจำเป็นต้องพัฒนาแอปพลิเคชั่นคอนโซลอย่างง่ายสำหรับการบริหารสาธารณะ แอปพลิเคชันเกี่ยวกับภาษีรถยนต์ พวกเขา (เท่านั้น) มีกฎเกณฑ์ทางธุรกิจดังต่อไปนี้: 1.a) หากยานพาหนะเป็นรถยนต์และครั้งสุดท้ายที่เจ้าของชำระภาษีคือ 30 วันที่ผ่านมาเจ้าของจะต้องจ่ายอีกครั้ง 1.b) หากยานพาหนะเป็นมอเตอร์ไซค์และครั้งสุดท้ายที่เจ้าของชำระภาษีคือ 60 วันที่ผ่านมาเจ้าของจะต้องจ่ายอีกครั้ง กล่าวอีกนัยหนึ่งถ้าคุณมีรถคุณต้องจ่ายทุก ๆ 30 วันหรือถ้าคุณมีมอเตอร์ไซค์คุณต้องจ่ายทุก ๆ 60 วัน สำหรับยานพาหนะแต่ละคันในระบบแอปพลิเคชันควรทดสอบกฎเหล่านั้นและพิมพ์ยานพาหนะเหล่านั้น (หมายเลขทะเบียนรถและข้อมูลเจ้าของรถ) ที่ไม่เป็นที่พอใจ สิ่งที่ฉันต้องการคือ: 2.a) สอดคล้องกับหลักการ SOLID (โดยเฉพาะอย่างยิ่งหลักการ Open / Closed) สิ่งที่ฉันไม่ต้องการคือ (ฉันคิดว่า): 2.b) โดเมนโลหิตจางดังนั้นตรรกะทางธุรกิจจึงควรเข้าสู่องค์กรธุรกิจ ฉันเริ่มต้นด้วยสิ่งนี้: public class Person // You wanted a banana but what you …
33 c#  .net  design  architecture 

4
เหตุใดจึงไม่มี WSDL type ที่รองรับ Web Api
ดังนั้นฉันเพิ่งเริ่มต้นกับ. Net WebApi และสิ่งหนึ่งที่ฉันสังเกตเห็นได้ทันทีคือไม่มีสัญญาที่กำหนดว่า API มีลักษณะอย่างไรและควรใช้งานอย่างไร (คำขอ / ตอบจากแต่ละการกระทำ) ซึ่งมักจะอยู่ในรูปแบบของ WSDL สำหรับ WCF / Soap ดูเหมือนว่าฉันจะเป็นสิ่งที่มีค่ามากและทำให้ชีวิตง่ายขึ้นสำหรับผู้บริโภค API ของคุณ มีเหตุผลที่ไม่มีหรือไม่ มีกระบวนทัศน์การเขียนโปรแกรมหรือหลักการที่ฉันไม่ทราบหรือไม่? มีวิธีที่ฉันสามารถสร้างหรือไม่

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