C#:使用别名 using 指令无法访问扩展方法
C#: Extension Methods not accessible with aliased using directive
编译以下代码:
using Microsoft.SharePoint.Client
class Dummy()
{
void DummyFunction(ClientContext ctx, ListCollection lists)
{
Context.Load(lists, lc => lc.Include(l => l.DefaultViewUrl);
}
}
但是,切换到别名using时,作为扩展方法的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 指令的别名?
不是在 C# 6 之前......但在 C# 6 中你可以使用:
using static Microsoft.SharePoint.Client.ClientObjectQueryableExtension;
using SP = Microsoft.SharePoint.Client;
第一个将引入 只是 ClientObjectQueryableExtension
的静态成员可用,与名称空间的其余部分无关。
编译以下代码:
using Microsoft.SharePoint.Client
class Dummy()
{
void DummyFunction(ClientContext ctx, ListCollection lists)
{
Context.Load(lists, lc => lc.Include(l => l.DefaultViewUrl);
}
}
但是,切换到别名using时,作为扩展方法的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 指令的别名?
不是在 C# 6 之前......但在 C# 6 中你可以使用:
using static Microsoft.SharePoint.Client.ClientObjectQueryableExtension;
using SP = Microsoft.SharePoint.Client;
第一个将引入 只是 ClientObjectQueryableExtension
的静态成员可用,与名称空间的其余部分无关。