.NET Core - ไลบรารีคลาสแบบพกพา

ในบทนี้เราจะพูดถึง PCL (Portable Class Library) คืออะไรและทำไมเราถึงต้องการ PCL เพื่อทำความเข้าใจแนวคิดนี้ให้เราเปิดโฟลเดอร์โปรเจ็กต์ไลบรารีคลาสซึ่งเราได้สร้างไว้ในบทที่แล้ว

ในโฟลเดอร์นี้คุณจะเห็นว่านอกจากไฟล์ project.json และ CS แล้วเรายังมีไฟล์ * .xproj ด้วยและนั่นเป็นเพราะ Visual Studio ตั้งค่า. NET Core ประเภทโครงการเป็น * .xproj แทน * .csproj

ดังที่กล่าวไว้โดย Microsoft * .xproj จะหายไป แต่ยังคงอยู่ที่นี่ในการแสดงตัวอย่างเครื่องมือ 2 ตามที่เราได้กล่าวถึงแอปพลิเคชัน UWP นั้นใช้ * .csproj

ตอนนี้มันเป็นไปไม่ได้ที่จะรับ * .csproj เพื่ออ้างอิงและ * .xproj และฟังก์ชันนั้นจะไม่ถูกนำไปใช้เนื่องจาก * .xproj จะย้ายออก

ดังนั้นเราจึงต้องการไลบรารีคลาสที่สามารถใช้ร่วมกันระหว่างแอปคอนโซลและแอป UWP แทนและนี่คือ PCL

PCL. คืออะไร

ตอนนี้ให้เราเข้าใจว่า PCL คืออะไร -

  • โครงการ Portable Class Library ช่วยให้คุณสามารถเขียนและสร้างชุดประกอบที่มีการจัดการที่ทำงานบนแพลตฟอร์ม. NET Framework มากกว่าหนึ่งแพลตฟอร์ม

  • คุณสามารถสร้างคลาสที่มีโค้ดที่คุณต้องการแชร์กับโปรเจ็กต์ต่างๆเช่นตรรกะทางธุรกิจที่ใช้ร่วมกันจากนั้นอ้างอิงคลาสเหล่านั้นจากโปรเจ็กต์ประเภทต่างๆ

  • นอกจากนี้ยังสามารถช่วยคุณสร้างแอปและไลบรารีข้ามแพลตฟอร์มสำหรับแพลตฟอร์ม Microsoft ได้อย่างรวดเร็วและง่ายดาย

  • ไลบรารีคลาสแบบพกพาสามารถช่วยคุณลดเวลาและค่าใช้จ่ายในการพัฒนาและทดสอบโค้ด

  • ใช้ประเภทโปรเจ็กต์นี้เพื่อเขียนและสร้างแอสเซมบลี. NET Framework แบบพกพาจากนั้นอ้างอิงแอสเซมบลีเหล่านั้นจากแอพที่กำหนดเป้าหมายหลายแพลตฟอร์มเช่น Windows และ Windows Phone เป็นต้น

ตอนนี้ให้เราลบไลบรารีคลาสที่เราสร้างขึ้นจาก Solution Explorer ในเวลาเดียวกันให้ลบออกจากโฟลเดอร์โซลูชันและเพิ่มรายการโครงการใหม่เพิ่มเติม

เลือกไฟล์ Visual C# → Windows เทมเพลตในบานหน้าต่างด้านซ้ายและเลือก Class Library (Portable) ในบานหน้าต่างตรงกลาง

ป้อน StringLibrary ในช่องชื่อและคลิก OK เพื่อสร้างโครงการนี้

ตอนนี้เราต้องเลือกกรอบเป้าหมายที่จะอ้างอิง ให้เราเลือก Windows Universal และ ASP.NET Core สักครู่จากนั้นเราจะกำหนดเป้าหมายใหม่ คลิกOK.

คุณจะเห็นว่าได้สร้างโครงการใหม่ในรูปแบบ PCF ตอนนี้ให้เราคลิกขวาที่โครงการ StringLibrary ใน Solution Explorer และเลือก Properties

คลิกที่ Target .NET Platform Standard

คลิกใช่; ตอนนี้เป็นไลบรารีคลาสเดียวกันโดยมีข้อแตกต่างเล็กน้อย ความแตกต่างคือ UWP สามารถใช้งานได้เช่นกันเนื่องจากมีไฟล์ * .csproj แทน * .xproj

ตอนนี้ให้เราเพิ่มคลาสใหม่ สำหรับสิ่งนี้คุณต้องคลิกขวาที่โครงการใน Solution Explorer แล้วเลือกAdd → Class...

เลือกชั้นเรียนในบานหน้าต่างตรงกลางแล้วป้อน StringLib.cs ในช่องชื่อจากนั้นคลิก Add. เมื่อเพิ่มคลาสแล้วให้แทนที่โค้ดต่อไปนี้ในไฟล์ StringLib.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
  
namespace StringLibrary { 
   public static class StringLib { 
      public static bool StartsWithUpper(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsUpper(ch); 
      } 
      public static bool StartsWithLower(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsLower(ch); 
      } 
      public static bool StartsWithNumber(this String str) { 
         if (String.IsNullOrWhiteSpace(str)) 
            return false; 
         Char ch = str[0]; 
         return Char.IsNumber(ch); 
      } 
   } 
}

ให้เราสร้างโปรเจ็กต์ไลบรารีคลาสพกพานี้และควรคอมไพล์โดยไม่มีข้อผิดพลาด ตอนนี้เราจำเป็นต้องเพิ่มการอ้างอิงของไลบรารีคลาสพกพานี้ในโครงการคอนโซลของเรา ดังนั้นขยาย FirstApp และคลิกขวาที่การอ้างอิงและเลือกAdd Reference…

ในกล่องโต้ตอบ Reference Manager ให้เลือก StringLibrary ซึ่งเป็นโปรเจ็กต์ไลบรารีคลาสแบบพกพาของเราแล้วคลิก OK.

คุณจะเห็นว่าการอ้างอิง StringLibrary ถูกเพิ่มไปยังคอนโซลโปรเจ็กต์และสามารถเห็นได้ในไฟล์ project.json เช่นกัน

ตอนนี้คุณสามารถเรียกใช้แอปพลิเคชันได้อีกครั้งและคุณจะเห็นผลลัพธ์เดียวกัน

ตอนนี้ให้เราใช้วิธีการขยายอื่น ๆ ของไลบรารีคลาสพกพาของคุณในโครงการของคุณ ไลบรารีแบบพกพาเดียวกันจะถูกใช้ในแอปพลิเคชัน UWP ของคุณด้วย