คำตอบที่ยอดเยี่ยมจากพวก แต่ฉันจะเตือนคุณจากการใช้เซสชั่นเสมอ มันง่ายและรวดเร็วในการทำเช่นนั้นและแน่นอนว่าจะใช้ได้ แต่จะไม่ดีในทุก ๆ
ตัวอย่างเช่นหากคุณพบสถานการณ์ที่โฮสติ้งของคุณไม่อนุญาตให้ใช้เซสชันหรือหากคุณอยู่ในเว็บฟาร์มหรือในตัวอย่างของแอปพลิเคชัน SharePoint ที่ใช้ร่วมกัน
หากคุณต้องการโซลูชันที่แตกต่างคุณสามารถดูการใช้IOC Containerเช่นCastle Windsorสร้างคลาสผู้ให้บริการเป็น wrapper แล้วเก็บอินสแตนซ์หนึ่งของคลาสของคุณโดยใช้การร้องขอหรือไลฟ์สไตล์เซสชันตามความต้องการของคุณ
IOC จะตรวจสอบให้แน่ใจว่าส่งคืนอินสแตนซ์เดียวกันทุกครั้ง
มีความซับซ้อนมากขึ้นใช่ถ้าคุณต้องการโซลูชันที่เรียบง่ายเพียงแค่ใช้เซสชั่น
นี่คือตัวอย่างการใช้งานด้านล่างที่คุณสนใจ
การใช้วิธีนี้คุณสามารถสร้างคลาสผู้ให้บริการตามบรรทัดต่อไปนี้:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
และลงทะเบียนมันเหมือน:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}