مروری بر کاربردهای Action و Func - قسمت دوم
نویسنده: وحید نصیری
تاریخ: ۱۳۹۱/۰۵/۲۸ ۱۸:۱۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public static void PrintNumbers()
{
var numbers = new[] { 1,2,3,5,7,90 }; // from a data source
foreach(var item in numbers)
{
Console.WriteLine(item);
}
}
public static void PrintNumbers(Func<int,string> formula)
{
var numbers = new[] { 1,2,3,5,7,90 }; // from a data source
foreach(var item in numbers)
{
var data = formula(item);
Console.WriteLine(data);
}
}
PrintNumbers(number => string.Format("{0:n0}",number));
PrintNumbers((number) =>{ return string.Format("{0:n0}",number); });
using System;
using System.Web;
using System.Web.Caching;
using System.Collections.Generic;
namespace WebToolkit
{
public static class CacheManager
{
public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes)
{
if (data == null) return;
httpContext.Cache.Add(
key,
data,
null,
DateTime.Now.AddMinutes(durationMinutes),
TimeSpan.Zero,
CacheItemPriority.AboveNormal,
null);
}
}
}
var item = httpContext.Cache[key];
if (item == null)
{
item = ReadDataFromDataSource();
if (item == null)
return null;
CacheInsert(httpContext, key, item, durationMinutes);
}
using System;
using System.Web;
using System.Web.Caching;
using System.Collections.Generic;
namespace WebToolkit
{
public static class CacheManager
{
public static void CacheInsert(this HttpContextBase httpContext, string key, object data, int durationMinutes)
{
if (data == null) return;
httpContext.Cache.Add(
key,
data,
null,
DateTime.Now.AddMinutes(durationMinutes),
TimeSpan.Zero,
CacheItemPriority.AboveNormal,
null);
}
public static T CacheRead<T>(this HttpContextBase httpContext, string key, int durationMinutes, Func<T> ifNullRetrievalMethod)
{
var item = httpContext.Cache[key];
if (item == null)
{
item = ifNullRetrievalMethod();
if (item == null)
return default(T);
CacheInsert(httpContext, key, item, durationMinutes);
}
return (T)item;
}
}
}
var user = HttpContext.CacheRead(
"Key1",
15,
() => _usersService.FindUser(userId));
public static T CacheRead<T>(this HttpContextBase httpContext, string key, int durationMinutes, Func<T> ifNullRetrievalMethod)
{
var item = httpContext.Cache[key];
if (item == null)
{
item = ifNullRetrievalMethod();
if (item == null)
return default(T);
CacheInsert(httpContext, key, item, durationMinutes);
}
return (T)item;
}
private async Task<T> doSomethingAsync<T>(Func<Task<T>> task)
{
var result = default(T);
try
{
result = await task();
}
catch (Exception ex)
{
// todo: log
}
return result;
}
private async Task doSomethingAsync(Func<Task> task)
{
await task();
} public async Task ExampleAsync()
{
await doSomethingAsync<string>(() => Task.FromResult("...."));
await doSomethingAsync(() => Task.Delay(1000));
}