定义内联扩展方法
本文关键字:方法 扩展 定义 | 更新日期: 2023-09-27 18:32:04
请考虑以下代码:
Func<int,bool> hasFullAccess = (mask => mask % 2 == 1);
foreach (AccessControlEntry ace in (IEnumerable)usrAcl)
{
if (hasFullAccess(ace.AccessMask)
我怎样才能告诉 Func 它是一个扩展方法,这样我就可以
if (ace.AccessMask.hasFullAccess())
还是这是不可能的?
你不能。您需要为此声明一个单独的扩展方法:
public static class Extensions
{
public static bool HasFullAccess(this int mask)
{
return mask % 2 == 1;
}
}
否(C# 5.0 规范 §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))
{
}