Установка моего базового класса с помощью класса кэша - PullRequest
0 голосов
/ 27 марта 2012

Я пытаюсь создать класс кеша, используя пример 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 Ответ

1 голос
/ 27 марта 2012

Возможно, вам следует прочитать больше о базовом синтаксисе C # Аргумент может исходить из аргумента в производном конструкторе, или вы можете построить его, используя статическое поле, свойство или метод. В первом примере показан базовый аргумент, полученный из производного конструктора. Во втором примере показано использование статического метода.

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

Или

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

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