เป็นไปได้ที่จะมีสองส่วน (เนมสเปซเดียวกัน, ชื่อคลาสเดียวกัน) ไปยังคลาสบางส่วนใน DLLs แยกกันหรือไม่?
เป็นไปได้ที่จะมีสองส่วน (เนมสเปซเดียวกัน, ชื่อคลาสเดียวกัน) ไปยังคลาสบางส่วนใน DLLs แยกกันหรือไม่?
คำตอบ:
จากMSDN - คลาสส่วนบุคคลและวิธีการ :
คำจำกัดความบางส่วนทั้งหมดหมายถึงการเป็นส่วนหนึ่งของประเภทเดียวกันจะต้องกำหนดไว้ในการชุมนุมที่เหมือนกันและโมดูลเดียวกัน (ไฟล์. exe หรือ. dll) คำจำกัดความบางส่วนไม่สามารถครอบคลุมหลายโมดูล
ไม่คลาสบางส่วนเป็นคุณสมบัติทางภาษาล้วนๆ เมื่อรวบรวมแอสเซมบลีไฟล์จะรวมกันเพื่อสร้างประเภท ไม่สามารถกระจายไฟล์ออกเป็นแอสเซมบลีที่แตกต่างกัน
อย่างไรก็ตามขึ้นอยู่กับสิ่งที่คุณต้องการทำคุณอาจจะสามารถใช้วิธีการขยายเพื่อบรรลุสิ่งที่คุณต้องการ
ไม่เป็นไปไม่ได้ เมื่อรวบรวมแอสเซมบลีคลาสจะต้องเสร็จสิ้น
ในขณะที่คำตอบอื่น ๆ ให้คำว่า "ไม่" ที่ไม่พึงประสงค์ซึ่งใครก็ตามที่ลงจอดบนหน้านี้ไม่ต้องการเห็นหรือได้ยิน แต่ฉันรู้สึกสับสนกับความคิดอื่นที่ยังไม่ได้พูดถึงที่นี่ ถ้าคลาสบางส่วนได้รับอนุญาตข้ามชุดประกอบหนึ่งจะสามารถเข้าถึงสมาชิกส่วนตัวของประเภทที่มีอยู่ซึ่งไม่ได้เขียนโดยเขาดังนั้นจึงอนุญาตให้เขาจัดการกับพวกเขาในรูปแบบที่ไม่ได้มีจุดประสงค์โดยผู้เขียนต้นฉบับ เกินไป.
ไม่เพียงแค่นั้นคลาสเหล่านั้นในชุดประกอบอื่น (และลูก ๆ ) จะต้องมีการคอมไพล์ใหม่เพื่อให้สามารถใช้งานได้ ดังนั้นจึงเป็นเหตุผลที่เป็นไปไม่ได้ที่จะอนุญาตให้แบ่งคลาสผ่านชุดประกอบที่แตกต่างกัน
คุณสามารถใช้วิธีการขยายเมื่อคุณต้องการเพิ่มวิธีการในชั้นเรียนใน dll ที่แตกต่างกัน ข้อเสียเปรียบอย่างหนึ่งของวิธีนี้คือคุณไม่สามารถเพิ่มวิธีการคงที่ได้
คำถามคือทำไมคุณต้องการสร้างคลาสบางส่วนในการประชุมอื่น? คุณสามารถกำหนดคลาสนามธรรมและอินเทอร์เฟซข้ามแอสเซมบลีบางทีคุณอาจต้องดู
คุณอาจต้องการสร้างคลาส Wrapper ภายในไลบรารีของคุณเองรอบ ๆ คลาสในไลบรารีส่วนที่ 3 จากนั้นเพิ่มฟังก์ชันการทำงานอะไรก็ได้ในคลาส wrapper