2016-03-15 53 views
0
public class Auth 
{ 

    private IBaseRepository<User> users; 

    public Auth(IBaseRepository<User> users) 
    { 
     this.users = users; 
    } 

    private const string UserKey = "simpleBlog.Atuh.UserKey"; 

    public static User User 
    { 
     get 
     { 
      if (!HttpContext.Current.User.Identity.IsAuthenticated) 
       return null; 

      var user = HttpContext.Current.Items[UserKey] as User; 

      if(user == null) 
      { 

       user = users.GetAll().FirstOrDefault(u => u.Name == HttpContext.Current.User.Identity.Name); 

       if (user == null) 
        return null; 

       HttpContext.Current.Items[UserKey] = user; 

      } 

      return user; 
     } 
    } 

} 

我在這部分有一個錯誤,但我不知道如何解決它。對象引用是必需的與構造函數的非靜態字段

user = users.GetAll().FirstOrDefault(u => u.Name == HttpContext.Current.User.Identity.Name); 

回答

0

我會做這個非靜態:

public static User User 

public User User 

類是這麼寫的,它會完全接受構造函數注入。我會根據需要(臨時)或者每個Web請求一次實例化它。

如果您從未使用過依賴注入,那麼這是嘗試它的完美場景。

0

這是一個實例字段

private IBaseRepository<User> users; 

,但是這是一個靜態的吸氣

public static User User 

不能從靜態吸氣訪問實例字段users

一個解決方案是使users靜態,雖然我不知道在代碼的更大範圍內是否有意義。

相關問題