[英]How to pass instance method as a delegate
我有這個與EF一起使用的方法
RetryGetWithExpression<city, List<city>>(u => u.Take(10).ToList());
public static TValue RetryGetWithExpression<T, TValue>(
Func<ObjectSet<T>, TValue> func)
where T : class
{
var entitySet = entitiesContext.CreateObjectSet<T>();
return func(entitySet);
}
上面的代碼適用於EF生成的表實體。 我想要做的是以與存儲過程一起使用的方式更改代碼。
這是執行SP的代碼:
Entities G = new Entities();
ObjectResult<retrieveMedia_Result> F = G.retrieveMedia(1);
當我嘗試將RetryGetWithExpression轉換為接受SP時,我遇到了一個問題,即retrieveMedia是實例方法而我無法將其作為u.retrieveMedia傳遞(1)
RetryGetWithExpression<Entities, ObjectResult<retrieveMedia_Result>>(
u => u.retrieveMedia(1));
public static TValue RetryGetWithExpression<T, TValue>(
Func<ObjectSet<T>, TValue> func)
where T : class
{
}
如何更改上面的代碼,以便它與SP一起使用?
嘗試
RetryGetWithExpression<ObjectResult<retrieveMedia_Result>>(u => u.retrieveMedia(1));
public static TValue RetryGetWithExpression<TValue>(Func<Entities, TValue> func)
{
return func(entitiesContext);
}
有點像,
public static TValue RetryGetWithExpression<TParam, TValue>(
Func<TParam, TValue> func,
TParam parameter)
{
return func(parameter);
}
你會打電話給誰,
Entities g = new Entities();
ObjectResult<retrieveMedia_Result> f =
RetryGetWithExpression<int?, ObjectResult<retrieveMedia_Result>>(
g.retrieveMedia,
1);
但是,它似乎毫無意義,因為你要做的就是傳遞一個函數委托並調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.