在C#中,这是否可以确保方法/类已给出签名的编译时

在C#中,这是否可以确保方法/类已给出签名的编译时,c#,methods,custom-attributes,C#,Methods,Custom Attributes,这在C#中是否可以确保方法/类已给出签名 例如,我想确保某些方法是公共的和静态的 什么时候不是我想要这个方法红色下划线 我需要它,因为我在组件测试运行程序应用程序中使用它,该应用程序使用反射,并期望DLL提供公共静态bool方法。我想强制程序员编写公共静态bools组件测试方法。这是否有可能强制他们在编译时执行?或者,通过添加另一个简单的应用程序,在构建后事件中通过反射进行检查,从而强制他们构建时间 这可能吗?可能是通过方法属性?通过反思?但是怎么做呢 不幸的是,您无法更改/扩展C#编译器以实现

这在C#中是否可以确保方法/类已给出签名

例如,我想确保某些方法是公共的和静态的

什么时候不是我想要这个方法红色下划线

我需要它,因为我在组件测试运行程序应用程序中使用它,该应用程序使用反射,并期望DLL提供公共静态bool方法。我想强制程序员编写公共静态bools组件测试方法。这是否有可能强制他们在编译时执行?或者,通过添加另一个简单的应用程序,在构建后事件中通过反射进行检查,从而强制他们构建时间


这可能吗?可能是通过方法属性?通过反思?但是怎么做呢

不幸的是,您无法更改/扩展C#编译器以实现此处所需的功能。然而,有一个名为Roslyn的Microsoft项目公开了一个公共API,用于实现自己对C#编译管道的扩展

使用Roslyn的结构,应该很容易遍历源代码语法树,查找非公共/静态的方法。一旦找到它们,就可以生成报告问题的代码问题;这些问题显示在代码编辑器(波浪下划线)和错误列表面板中。发件人:

代码问题提供程序可以很容易地将错误或建议显示为编辑器中的波浪下划线,或显示在错误列表窗口中


环顾四周,寻找代码发行者;它可能对您需要做的事情很有用。

不确定下划线的位置,但您可能可以使用单元测试来测试它。你应该提供更详细的信息,说明你正在做什么来获得更有用的答案。在方法声明中键入给定的签名。对我来说,可能的重复闻起来像是设计问题。也许您应该利用c#特性,将
public static bool
需求替换为接口-
public interface ITestableComponent{bool GetComponent()}
。现在在运行时注入一些工厂实例(通过某种机制,许多工厂实例已经存在)。