2012-03-27 58 views
-1

我試圖建立一個使用Ardalis例http://ardalis.com/introducing-the-cachedrepository-pattern設置我的基類與緩存類

我收到錯誤說它具有零個參數的緩存類。我可以弄清楚如何通過最上面的部分。

類的緩存部分沒有錯誤和基類的工作

我在做什麼錯在程序存儲庫類的頂部。我如何繼承錯誤。

謝謝你的幫助。

庫類的問題

public class TweetSearchCache : TweetSearch 
    { 
    // SingleUserAuthorizer auth; 

    public TweetSearchCache() : base //(SingleUserAuthorizer auth) 
    { 



    } 

    private static readonly object CacheLockObject = new object(); 
    public override List<Search> GetTweets() 
    { 

     string cacheKey = "GetSearch"; 



     var result = HttpRuntime.Cache[cacheKey] as List<Search>; 

     if (result == null) 
     { 
      lock (CacheLockObject) 
      { 
       result = HttpRuntime.Cache[cacheKey] as List<Search>; 

       if (result == null) 
       { 

        result = base.GetTweets().ToList();            

        HttpRuntime.Cache.Insert(cacheKey, result, null, 

        DateTime.Now.AddMinutes(2), TimeSpan.Zero); 

       } 

      } 
     } 


     return result; 



    } 

    } 

基類

public class TweetSearch 
    { 
    private readonly SingleUserAuthorizer _auth; 

     public TweetSearch(SingleUserAuthorizer auth) 
    { 
     _auth = auth; 
    } 


    public virtual List<Search> GetTweets() 
    { 
     string hashTerm = "#searchterm"; 

     string rejectedWords = "Searchterm"; 


     using (var twitterCtx = new TwitterContext(_auth)) 
     { 
      var queryResults = (from search in twitterCtx.Search 
           where search.Type == SearchType.Search && 
             search.Hashtag == hashTerm || 
            // search.Query == twitQuery || 
            // search.WordPhrase == twitPhrase || 
             search.WordNot == rejectedWords && 

             search.ShowUser == true && 
             search.IncludeEntities == true && 
             search.Locale == "EN" && 
             search.PageSize == 100 
           select search).ToList(); 

      return queryResults;//.ToList(); 
     } 



    } 

回答

1

你或許應該閱讀更多關於基本C#語法。參數可以來自派生構造函數中的參數,也可以使用靜態字段,屬性或方法構建。第一個示例顯示來自派生構造函數的基本參數。第二個例子顯示了使用靜態方法。

public TweetSearchCache(SingleUserAuthorizer auth) : base(auth) { 
// ... 
} 

或者

public TweetSearchCache() : base(CreateAuth()) { 
// ... 
} 

public static SingleUserAuthorizer CreateAuth() { 
    SingleUserAuthorizer createdAuth = ... 
    // ... 
    return createdAuth; 
} 
+0

感謝您的第一個工作。我還有我班的其他同學。感謝您幫助我,展示我的未來,我不知道我必須再次通過單一的授權課程 – 2012-03-27 02:30:44