编译时间:如何检查方法中是否使用了数据类型(和/或值)

Compile Time: How can I check if a datatype (and or value) is being used within a method

在编译时,如何检查方法中是否使用了数据类型(和/或值)。

我正在尝试构建一个支持插件的 architecture

我希望编译器在插件中未引发事件时抛出错误。

我正在使用 VS2015 预览版。

有什么建议吗?

我认为您无法让编译器为您抛出该错误。您可以引入一个额外的构建步骤来执行 C# 控制台应用程序来检查(使用反射)您想要的内容。

这种验证可以使用 PostSharp 实现。它并不简单,但比使用 Mono.Cecil 更容易。 SyntaxTreeVisitor and ISyntaxReflectionService is a good foundation for implementing the analysis algorithm which has to be invoked from Aspect.CompileTimeValidate.

Roslyn 也必须提到。它允许您 "extend" C#(或 VisualBasic)编译器与自定义诊断,它与 VS2015 很好地集成。

免责声明:我是 PostSharp 开发人员。