2012-03-27 8 views
-1

Ich versuche, eine Cache-Klasse zu bauen mit dem Ardalis Beispiel http://ardalis.com/introducing-the-cachedrepository-patternEinstellung meiner Basisklasse mit Cache-Klasse

Ich erhalte die Fehlermeldung, dass es Null Argumente hat. Ich kann herausfinden, wie man den oberen Teil passiert.

Der Cache-Teil der Klasse hat keine Fehler und die Basisklasse arbeitet

Was im oberen Teil der respository Klasse ich falsch mache. Wie bin ich falsch erben.

Vielen Dank für jede Hilfe.

Repository-Klasse mit dem Problem

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; 



    } 

    } 

Base Class

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(); 
     } 



    } 

Antwort

1

Sie sollten wahrscheinlich mehr über grundlegende C# Syntax lesen. Das Argument kann entweder von einem Argument im abgeleiteten Konstruktor oder von einem statischen Feld, einer Eigenschaft oder einer Methode stammen. Das erste Beispiel zeigt das Basisargument des abgeleiteten Konstruktors. Das zweite Beispiel zeigt die Verwendung einer statischen Methode.

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

Oder

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

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

Danke das erste gearbeitet. Ich hatte auch den Rest meiner Klasse. Danke, dass du mir geholfen hast und mich für die Zukunft gezeigt hast, ich wusste nicht, dass ich die Single-Auth-Klasse auch noch einmal bestehen musste –

Verwandte Themen