Вызывать метод в Func при передаче в качестве параметра - PullRequest
0 голосов
/ 14 октября 2010

Я создавал Func в качестве ввода параметров для другого метода, но как мне его вызвать?

Следующий код описывает мою работу:

Я вызываю Foo с:

Foo(x => x.SlidingExpiration(TimeSpan.FromSeconds(50)));

Мой метод Foo:

public void Foo(Func<CacheExpiration, TimeSpan> cacheExpiration)
{
....
inside here I want to call RefreshCache, but how?.. cacheExpiration.??

}

The CacheExpiration:)

public class CacheExpiration
        {
            TimeSpan timeSpan;
            bool sliding;

            public TimeSpan SlidingExpiration(TimeSpan ts)
            {
                this.timeSpan = ts;
                this.sliding = true;
                return ts;
            }
            public TimeSpan AbsoluteExpiration(TimeSpan ts)
            {
                this.timeSpan = ts;
                return ts;
            }

            public bool RefreshCache(MetaObject mo)
            {
                //some logic....
                return true;
            }

        }

Ответы [ 2 ]

1 голос
/ 14 октября 2010
var ts = cacheExpiration(yourCacheExpiration);
0 голосов
/ 14 октября 2010

Если я правильно читаю, то Func cacheExpiration принимает экземпляр CacheExpiration и возвращает TimeSpan. Итак, я мог видеть тело Фу, являющееся:

TimeSpan ts = cacheExpiration.SlidingExpiration(TimeSpan.FromSeconds(50));
//or
TimeSpan ts2 = cacheExpiration.AbsoluteExpiration(TimeSpan.FromSeconds(50));

Это не совпадает с лямдой в вашем примере, поэтому я предполагаю, что вы действительно хотите, чтобы cacheExpiration был Func, который принимает Timespan и возвращает TimeSpan. Но это не сработает для метода RefreshCache, так как он принимает MetaObject и возвращает логическое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...