Những câu trả lời tuyệt vời từ các bạn nhưng tôi sẽ cảnh báo bạn không nên luôn dựa vào Phiên. Nó là nhanh chóng và dễ dàng để làm như vậy, và tất nhiên sẽ làm việc nhưng sẽ không tuyệt vời trong tất cả các cicrumstances.
Ví dụ: nếu bạn gặp phải tình huống trong đó lưu trữ của bạn không cho phép sử dụng phiên hoặc nếu bạn đang ở trong trang trại web hoặc trong ví dụ về ứng dụng SharePoint được chia sẻ.
Nếu bạn muốn một giải pháp khác, bạn có thể xem xét bằng cách sử dụng IOC Container, chẳng hạn như Castle Windsor , tạo một lớp nhà cung cấp làm trình bao bọc và sau đó giữ một phiên bản của lớp của bạn bằng cách sử dụng theo yêu cầu hoặc lối sống phiên tùy theo yêu cầu của bạn.
IOC sẽ đảm bảo rằng cùng một thể hiện được trả về mỗi lần.
Có phức tạp hơn, nếu bạn cần một giải pháp đơn giản chỉ cần sử dụng phiên.
Dưới đây là một số ví dụ thực hiện dưới đây quan tâm.
Sử dụng phương pháp này, bạn có thể tạo một lớp nhà cung cấp dọc theo dòng:
public class CustomClassProvider : ICustomClassProvider
{
public CustomClassProvider(CustomClass customClass)
{
CustomClass = customClass;
}
public string CustomClass { get; private set; }
}
Và đăng ký một cái gì đó như:
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ICustomClassProvider>().UsingFactoryMethod(
() => new CustomClassProvider(new CustomClass())).LifestylePerWebRequest());
}