Trả lời

13

Bạn nên giấu "người dùng hiện tại" đằng sau một sự trừu tượng:

public interface ICurrentUser 
{ 
    string Name { get; } 
} 

trừu tượng này nên được định nghĩa trong lớp doanh nghiệp và bạn cần phải tạo ra một thực hiện cụ thể ASP.NET mà bạn đặt trong Composition Root:

public class AspNetCurrentUser : ICurrentUser 
{ 
    public string Name 
    { 
     get { return HttpContext.Current.Session["user"]; } 
    } 
} 

Bây giờ kinh doanh đối tượng lớp của bạn có thể phụ thuộc vào giao diện ICurrentUser, và trong Unity bạn có thể đăng ký thi như sau:

01.
container.RegisterType<ICurrentUser, AspNetCurrentUser>(); 
+0

Có cách nào để thực hiện việc này mà không sử dụng bất kỳ thuộc tính tĩnh nào không? Về cơ bản nếu tôi muốn dựa trên HttpRequestContext hoặc trên chính Controller, làm cách nào để làm điều đó? –

+0

@CharlesPrakashDasari: Đặt câu hỏi mới [tại đây] (https://stackoverflow.com/questions/ask) và đăng liên kết tới câu hỏi đó làm nhận xét cho câu trả lời này. – Steven

Các vấn đề liên quan