C# 在编译时断言 Func 参数是静态的

C# Assert at compile time Func argument is static

有没有办法在编译时断言参数 Func 是静态的?

这似乎是编译器可以轻松检查的内容,而不是依赖于运行时故障。

我意识到它可以在运行时使用 [arg] 完成。Method.IsStatic

干杯

This seems like something the compiler could easily check rather than relying on runtime failure.

是的,它绝对可以——但前提是语言中有某些东西可以提示它这样做。在 C# 中没有 - 这是一个非常奇怪的要求,IMO,并且不能很好地与 lambda 表达式配合使用。

使用 VS 2015,您可以轻松编写 Roslyn CodeDiagnostic 来发现这一点并发出警告或错误。您可能想用一个属性来修饰参数以便诊断发现,然后检查所有调用者。