小编Dan*_*nry的帖子

Expression.Coalesce的转换参数有什么用?

有关此问题的上下文,请参阅Expression.Coalesce Method 的 Coalesce(Expression, Expression, LambdaExpression) 重载的文档。我特意指的是这个重载的第三个参数。我有一些关于它的问题,但我无法在任何地方找到答案,包括微软的文档:

  • 为什么要选择使用这种重载来提供转换?
  • 编译表达式时如何使用它?
  • 应该如何LambdaExpression构造一个传递(我只能假设一个特定的参数签名和预期的返回值类型)?

??我多次尝试(通过将代码中使用运算符的各种 lambda 函数转换为Expression<>)让 C# 编译器为我构建一个使用此参数的表达式树。但每次我使用调试器检查结果树中表达式 with 的转换参数的推论属性时,它都是.NodeType Coalescenull

我这么问是因为我正在开发一个通过分析表达式树来工作的库,我需要它来正确理解和支持这些转换。

c# clr expression-trees roslyn

5
推荐指数
1
解决办法
1236
查看次数

你如何检查传递给委托的参数?

我正在尝试使用自己的方法创建一个类来处理远程服务器上的调用方法.为了使它对客户机调用更简单,我正在写一个接受的接口,这样编译器会知道的参数的数量和方法的返回类型的通用类.

public class Service<TInterface>
{
    public TResult Invoke<TResult>(Func<TInterface, TResult> function)
    {
        // Do the work
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我们的想法是他们可以引用具有接口的程序集,例如:

public interface ICalculator
{
    int Add(int num1, int num2);
}
Run Code Online (Sandbox Code Playgroud)

然后他们可以编写代码来点击服务:

var addend = new Service<ICalculator>(/* constructor */).Invoke(s => s.Add(3, 4));
Run Code Online (Sandbox Code Playgroud)

问题是,在第一个代码块,我需要知道如何找出他们在LAMDA表达传递哪些参数.我怎么做?

c# delegates

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

我如何获得Windows 10 Anniversary Update或更高版本在WPF应用中使用的是亮还是暗的主题?

我编写了一个WPF桌面应用程序,我想使用Desktop Bridge将其放置在Windows应用商店中。该应用程序能够以亮和暗模式呈现自己,并使用强调色。但是,要成为Windows 10的好公民,我想尽可能从OS中获取该信息。

我目前的理解是,我可以从这里获得重点色:

var accentBrush = SystemParameters.WindowGlassBrush;
Run Code Online (Sandbox Code Playgroud)

如何确定Windows 10是亮还是暗主题?另外,您建议通过哪种方法在用户偏爱浅色/深色或强调色时收到通知?

c# wpf windows-10

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

标签 统计

c# ×3

clr ×1

delegates ×1

expression-trees ×1

roslyn ×1

windows-10 ×1

wpf ×1