今天在 bdn 中看到一篇文章
http://bdn.borland.com/article/0,1410,32765,00.html
重要的部分摘抄如下
สรุปผู้บริหาร
•เนมสเปซไม่ส่งผลกระทบต่อ Delphi สำหรับ Win32
•เนมสเปซผลิตตามชื่อหน่วยดังนี้:
•หากชื่อหน่วยถูกจุดให้ใช้ชื่อหน่วยถึงจุดสุดท้าย
•หากไม่ได้จุดประนั้นจะใช้เนมสเปซเริ่มต้น
•หากไม่มีเนมสเปซเริ่มต้นคุณจะใช้ชื่อหน่วย
•รหัสที่แปลงจาก Delphi 8 อาจต้องมีการแก้ไขบางอย่าง
•ใช้แพ็คเกจไม่ใช่ไลบรารีเสมอเพื่อสร้างแอสเซมบลีที่แชร์ได้
• Delphi จะอ้างถึงประเภทตามชื่อหน่วยเต็มเสมอ
•ภาษาอื่น ๆ จะต้องอ้างถึงประเภทโดยใช้เนมสเปซของพวกเขา
•การประกาศ ASP.NET, ไฟล์การกำหนดค่าและ. NET Reflection มักจะอ้างถึงประเภทโดยเนมสเปซของพวกเขาเสมอ
•หากหลายหน่วยปล่อยประเภทสาธารณะที่มีชื่อเดียวกันลงในเนมสเปซเดียวกันการชุมนุมอาจไม่สามารถใช้งานได้
บอร์แลนด์แนะนำให้ไม่ใช้โครงการห้องสมุดเพื่อสร้างแอสเซมบลีเสมอ ใน Delphi 2005 คอมไพเลอร์นั้นเข้มงวดขึ้นและจะไม่อนุญาตให้คุณรวบรวมแอปพลิเคชันที่อ้างอิงถึง 'ไลบรารี' ของ Delphi อีกต่อไป
ใช้โครงการแพ็คเกจเพื่อสร้างแอสเซมบลี. NET เสมอ
อย่างไรก็ตามเช่นเดียวกับทุกสิ่งมีข้อยกเว้นสำหรับกฎและมีหลายสถานการณ์ที่คุณต้องใช้เนมสเปซแม้ว่าคุณจะเขียนโค้ดใน Delphi
ตัวอย่างหนึ่งคือเมื่อคุณใช้แท็กในไฟล์ ASPX, ASCX หรือ ASMX หากคุณสร้างหน้าเว็บที่เรียกว่า twebform ในแอปพลิเคชันไฟล์หน้าเว็บ. webform1.pas แล้วแท็กหน้าจะเป็น:
<%@page language = "c#" codebehind = "webform1.pas" สืบทอด = "application.pages.twebform1"%> |
อีกอย่างคือเมื่อส่งข้อมูลประเภทไปยัง. NET ในรูปแบบของสตริงโดยเฉพาะอย่างยิ่งเมื่อใช้ API ที่ใช้การสะท้อนและไฟล์การกำหนดค่า:
var c: typeconverter; C: = Assembly.createinstance ('sample.controls.tconverter'); |
ความแตกต่างเล็กน้อยนี้มักจะเดินทางคนและเป็นสิ่งที่คุณต้องระวังโดยเฉพาะอย่างยิ่งเมื่อพอร์ตรหัสจาก Delphi 8 หรือแปลงรหัสจากภาษาอื่น ๆ
这就解释了我原来的疑问, 在 d2005 中, 新建一个 .net dll, 编译, 在别的编译器中 (c#), 可以使用, 但是在 delphi 中自己却不能用, 虽然用薄可以解决问题,,但是包中添加资源很不方便, 真是不知道 Borland 是怎么想的。