小编Hut*_*tch的帖子

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

以下代码编译:

using Microsoft.SharePoint.Client

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

但是,当切换到使用别名时,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));
    }
}
Run Code Online (Sandbox Code Playgroud)

仍然可以使用Include函数,但不能作为扩展方法.有没有办法将它用作扩展方法而不取消使用using指令?

c# extension-methods

7
推荐指数
1
解决办法
339
查看次数

在散列表数组上使用Sort-Object

在PowerShell(版本2)中创建以下哈希表数组后:

$array = @()
$array += @{a = 1; b = 5}
$array += @{a = 3; b = 4}
$array += @{a = 5; b = 9}
$array += @{a = 7; b = 2}
Run Code Online (Sandbox Code Playgroud)

对Sort-Object的所有以下调用都返回相同的{a,b}序列:{5,9},{7,2},{1,5},{3,4}:

$array | Sort-Object
$array | Sort-Object -Descending
$array | Sort-Object a
$array | Sort-Object b
$array | Sort-Object "a"
$array | Sort-Object -Property a
$array.GetEnumerator() | Sort-Object
$array.GetEnumerator() | Sort-Object a
Run Code Online (Sandbox Code Playgroud)

如果$array直接调用它,它将按照输入的顺序返回对象,因此排序正在改变顺序.但也许它没有比较器所以只是把每个对象视为平等?

目标是对所有对象进行排序.我很好地处理涉及备用自定义对象,备用集合和/或备用排序例程的变通方法.

编辑:为了澄清我想要实现的目标,这将是C#中的一个粗略的等价物

class MyClass {
    public int a;
    public …
Run Code Online (Sandbox Code Playgroud)

sorting powershell powershell-2.0

4
推荐指数
1
解决办法
2381
查看次数

有条件的链可观察

对于以下TypeScript(使用rxjs):

getRegularData(): Observable<MyData> {
    return WS.loadRegularData();
}

getAlternateData(): Observable<MyData> {
    return WS.loadAlternateData();
}
Run Code Online (Sandbox Code Playgroud)

如何实现新方法以满足以下伪代码:

getData(): Observable<MyData> {
    // try to use getRegularData, and return observable for result.
    // if getRegularData returns null, get data from getAlternateData()
    // instead and return observable for result.
}
Run Code Online (Sandbox Code Playgroud)

javascript reactive-programming observable rxjs typescript

4
推荐指数
1
解决办法
5516
查看次数

正则表达式匹配精确的字符串(不允许终止换行符)

在 .NET System.Text.RegularExpressions.Regex中,如果^将 和$添加到正则表达式中以查找精确匹配,则如果将终止符\n附加到正在验证的字符串,则 IsMatch 仍返回 true。

例如,以下代码:

Regex regexExact = new Regex(@"^abc$");
Console.WriteLine(regexExact.IsMatch("abc"));
Console.WriteLine(regexExact.IsMatch("abcdefg"));
Console.WriteLine(regexExact.IsMatch("abc\n"));
Console.WriteLine(regexExact.IsMatch("abc\n\n"));
Run Code Online (Sandbox Code Playgroud)

返回:

true
false
true
false
Run Code Online (Sandbox Code Playgroud)

除了第一个之外,对于上述所有情况都会返回 false 的正则表达式是什么?

regex

3
推荐指数
1
解决办法
2169
查看次数