请考虑以下代码:
Func<int,bool> hasFullAccess = (mask => mask % 2 == 1);
foreach (AccessControlEntry ace in (IEnumerable)usrAcl)
{
if (hasFullAccess(ace.AccessMask)
我如何告诉Func它是一个扩展方法,这样我就可以
if (ace.AccessMask.hasFullAccess())
或者这不可能吗?
答案 0 :(得分:4)
你做不到。您需要为此声明一个单独的扩展方法:
public static class Extensions
{
public static bool HasFullAccess(this int mask)
{
return mask % 2 == 1;
}
}
答案 1 :(得分:1)
否(C# 5.0 specification§10.6.9扩展方法);即使你可以,也需要更改名称解析规范(第7.6.5.2节扩展方法调用)。
相反,你可以尝试这样的事情:
Func<AccessControlEntry,bool> hasFullAccess = (ace => ace.AccessMask % 2 == 1);
// cast usrAcl as required get IEnumerable<AccessControlEntry>
foreach (var ace in usrAcl.Where(hasFullAccess))
{
}