C#: 使用别名的 using 指令无法访问扩展方法

9
以下代码可以编译:
using Microsoft.SharePoint.Client

class Dummy()
{
    void DummyFunction(ClientContext ctx, ListCollection lists)
    {
        Context.Load(lists, lc => lc.Include(l => l.DefaultViewUrl);
    }
}

然而,当使用别名进行切换时,Include函数存在问题,该函数是一个扩展方法:
using SP = Microsoft.SharePoint.Client

class DummyAliased()
{
    void DummyFunction(SP.ClientContext ctx, SP.ListCollection lists)
    {
        /* Does not compile: */
        Context.Load(lists, lc => lc.Include(l => l.DefaultViewUrl);
        /* Compiles (not using function as generic) */
        Context.Load(lists, lc => SP.ClientObjectQueryableExtension.Include(lc, l => l.DefaultViewUrl));
    }
}

Include函数仍然可以使用,但不能作为扩展方法。有没有办法在不取消别名using指令的情况下将其用作扩展方法?


1
类似的问题在 https://dev59.com/lnA75IYBdhLWcg3wW3u8 上问到为什么这个不起作用。我在问是否有比我展示的更好的解决方法。 - Hutch
1个回答

13

在 C# 6 之前不行... 但是在 C# 6 中,您可以使用以下内容:

using static Microsoft.SharePoint.Client.ClientObjectQueryableExtension;

using SP = Microsoft.SharePoint.Client;

其中的第一个将仅引入ClientObjectQueryableExtension的静态成员,而不涉及名称空间的其他部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接