说我投了一个Func<>致代表,例如......
Func<object, int> func = GetFunc();
Delegate d = func;
现在,如果我提前知道代表的类型,我可以直接回到Func&lt;&gt;
Func<object, int> newFunc = (Func<object, int>)d;
但是如果我在运行时之前不知道函数类型怎么办?如何取回我的Func&lt;&gt;来自代表?
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
var func = GetFuncFromDelegate(d);
或至少获取Type参数,以便重建类型:
Delegate d = GetFunc(); // may return a Func<T>, Func<T,T2>, Func<T,T2,T3>, etc...
Type[] funcParams = GetTypeParamsFromDelegate(d);
答案 0 :(得分:2)
或至少获取Type参数,以便重建类型:
这个很简单:
update t1
set num_books=inventory
FROM bs t1 LEFT JOIN
(select bookstore_id,SUM(case when event_name like 'A' then 1 when event_name like 'R' then -1 else NULL end) as inventory
from bse
group by bookstore_id) t2
on t1.bookstore_id=t2.bookstore_id